JDBC와 Connection Pool 개념

까만호랭·2023년 8월 23일
1

📌 JDBC

자바에서 데이터베이스 접속할 수 있도록 하는 자바 API이다.
JDBC를 사용함으로써 데이터베이스에서 자료를 쿼리(Query-DB에 정보를 요청)하거나 업데이트 할 수 있다.

JDBC의 표준 3가지 인터페이스

  1. Connection : 연결
  2. Statement : SQL 전달
  3. ResultSet : 결과 응답

⚠️ Datasource

순수 jdbc로 데이터베이스에 접근을 하면, 데이터베이스에 접근할 때마다 connection을 맺고 끊는 작업을 한다. 이 connection을 맺고 끊는 작업을 줄이기 위해 미리connection을 생성해 두고, 데이터베이스에 접근하고자 하는 사용자에게 미리 생성된 connection을 제공하고 돌려받는다. 이 connection들을 모아두는 장소를 connection pool이라 하며

Datasourcejava 에서 connection pool을 지원하기 위한 인터페이스이다.

📢JDBC 동작 순서

Centered Image 위 사진대로 동작이 진행된다.

📢 JDBC 드라이버

  • 데이터베이스와의 통신을 담당하는 인터페이스
  • Oracle, MS SQL, MySQL 등과 같은 데이터베이스에 알맞은 JDBC 드라이버를 구현하여 제공
  • JDBC 드라이버의 구현체를 이용해서 특정 벤더의 데이터베이스에 접근할 수 있다.
  • 📢 JDBC API의 사용 순서

    Centered Image 이며 코드로 표현하면
    public int ex() { /
    		int cnt = 0;
    		try {
    			String sql = "select * from exdata";
    			conn = ds.getConnection();
    			pstmt = conn.prepareStatement(sql);
    			rs = pstmt.executeQuery();
    			
    		} catch (Exception e) {
    			System.out.println(e.getMessage());
    		} finally {
    			try {
    				if(rs!=null) rs.close();
    				if(pstmt!=null) pstmt.close();
    				if(conn!=null) conn.close();
    			} catch (Exception e2) {
    				// TODO: handle exception
    			}
    		}
    		return cnt; 
    	}

    ⚠️ 이때 주의할 점은 사용하는 SQL문에 따라서 rs가 메소드가 달라진다.
    select 일때는 executeQuery() 를 사용하고
    insert,update,delete를 사용할땐 executeUpdate()를 사용한다.

    ⚠️ ResultSet, Statement, Connection 객체들의 Close : JDBC API를 통해 사용된 객체들은 생성된 객체들을 사용한 순서의 역순으로 Close 한다.

    📌 Connection Pool

    Connection 객체를 미리 생성하여 보관하고 애플리케이션이 필요할 때 꺼내서 사용할 수 있도록 관리해 주는 것이 Connection Pool이다.

    📢 Connection Pool의 실행 구조

    1. Java 애플리케이션을 시작하는 타이밍에 Connection Pool은 필요한 만큼의 Connection 객체를 default 값으로 10개를 미리 생성하고 보관한다.
    2. 커넥션 풀에 들어있는 Connection 객체는 TCP/IP로 DB와 연결되어 있는 상태이기 때문에 즉시 SQL을 DB에 전달할 수 있다.
    3. DB 드라이버를 통해 커넥션을 조회, 연결, 인증, SQL을 실행하는 시간 등 커넥션 객체를 생성하기 위한 과정을 생략이 가능하기 때문에 속도가 빠르다.
    profile
    남들과 함께 발자국을 남기는 까만호랭

    2개의 댓글

    comment-user-thumbnail
    2023년 8월 23일

    좋은 글 잘봤습니다~!

    1개의 답글