자바 프로그램내에서 SQL문을 실행하기 위한 자바 API.
자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 Interface이다
JDBC Driver
: 각 DBMS에 알맞는 클라이언트1. 드라이버 로드
![]()
2. 데이터 베이스 연결
![]()
3. SQL문 실행을 위한 객체를 생성
- 파라미터에 따라 동적인 쿼리인 경우 “?”를 넣어줌
- 그냥 정적인 쿼리인 경우
4. SQL문 실행
- executeQuery()
Select등 리턴 값이 필요한 쿼리문일때 사용
- executeUpdate()
insert, update, delete등 리턴 값이 필요 없는 쿼리문일때 사용
- 만약 쿼리문이
select
절일 때ResultSet
으로 출력
next()를 통해 DB의 table 안의 row한 줄을 불러온다.
getString()
,getDouble()
같은 함수를 통해 한 행의 특정 Column값을 가져 온다.
5. 리소스 close()
생성 역순으로 close를 해준다.
JDBC는 초기 설정이 간단하고 학습 비용이 낮은 장점이 있다.
그러나 connection
연결과 예외처리 등 수많은 반복적인 코드를 개발자가 직접 작성하고 관리해야 하는 불편함이 있고,
SQL문도 같이 포함해서 짜기 때문에 가독성이 좋지 않다.
심지어 그 SQL문 마저도 중간 중간에 +
로 string을 합치게 되는 하드 코딩 형식이기 때문에 소스 분석과 관리 면에서도 좋지 않다.
그래서 JDBC
만 독자적으로 사용하지 않고 이러한 단점들을 라이브러리를 통해 최소화 하려는 움직임이 생기고 있다.
1. DBCP 사용
데이터베이스와
Connection
을 맺는 작업은 매우 느리며 자원을 많이 소모하는 작업이다.
Driver
를 로드하고 데이터베이스에 연결하는 부분을 효율적으로 처리하는 것이DBCP
이다.
Connection Pool
을 만들어서 미리 생성한 여러Connection
객체를 담아두고 클라이언트가 요청할 때 마다 하나씩 빌려준다.
클라이언트가 사용을 마친 후에는Pool
에 다시Connection
객체를 반환하기 때문에 데이터베이스 접근 요청이 존재하더라도
새로운Connection
객체를 생성할 필요가 없다.
물론Pool
에서Connection
객체를 다 사용하고 있을 때는 잠시 대기를 하고 자리가 생기면
Connection
을 사용할 수 있게 된다.
Connection Pool
에 반납할 때 최대로 유지될 수 있는 커넥션 개수getConnection() Method
를 통해 커넥션 풀에 채워 넣을 커넥션 개수2. Mybatis 사용
자바 13 부터는 멀티 라인 문자열을 제공한다.
긴 문자열을 +를 사용하여 이어 붙이지 않아도 되고 가독성도 높아질 것이다.
하지만 LTS버전인 java11, java8 버전에서는 사용을 하지 못하는 문제가 있다.
그래서ibatis/mybatis
를 사용해서 xml에 query문을 작성하고 Mapping해서 사용할 수 있다.
query문을 따로 관리할 수 있다는 점에서 장점이 있다.
이 외에도 데이터 캐싱이 가능하기 때문에 성능 개선에서도 탁월하다.
즉 JDBC
의 단점을 보완하기 위해
Connection 부분은 DBCP
를 사용하고
query문은 Mybatis
를 사용해서
JDBC
의 가독성 문제를 해결하고 관리, 유지보수 면에서도 수월해 질 것이다.