JDBC란?

Java Database Connectivity의 약자로 Java에서 데이터베이스에 어떻게 접근할 수 있는지 정의해놓은 API다. JDBC는 한 애플리케이션에서 여러가지 구현을 사용할 수 있게해준다. 이 API는 Java 패키지를 동적으로 로드하고, JDBC 드라이버 관리자에 등록하는 메커니즘을 제공한다.

  • JDBC 드라이버: Java 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환하는 어댑터다.

기능

JDBC connection은 CRUD의 업데이트 문과 SELECT 같은 쿼리 문을 지원한다. JDBC는 아래의 클래스 중 하나로 명령문을 나타낸다.

  • Statement: 정적인 SQL 문을 실행하고 결과를 반환하는 데 사용된다. 기본적으로 ResultSet하 당 하나의 Statement만 열 수 있다. 매개변수를 전달할 수 없고, 실행마다 컴파일을 하게된다.
  • PreparedStatement: SQL 문을 미리 컴파일한다. 이 객체를 사용하여 같은 SQL 문을 여러번 실행할 수 있다. setXXX() 메서드로 매개 변수를 변환하여 지정할 수 있다.
  • CallableStatement: PreparedStatement를 확장했다. 데이터베이스에 저장되어 있는 프로시저를 실행할 때 사용한다. setXXX()메서드를 매개 변수를 변환하여 지정할 수 있다.

Close

JDBC API 를 사용하게 되면 다음의 클래스들을 모두 사용하게된다.

Connection, Statement, ResultSet

이들은 소켓과 File Descriptor같은 운영체제 자원을 사용하기 때문에 사용 후 잘 닫아야된다. 기존에는 close 메서드를 이용하여 수동으로 닫았지만, Java 7 이후로는 try-with-resource 방식을 이용하여 가독성을 향상시킨 닫기가 가능해진다. 자세한 내용은 링크를 확인하기를 바란다.

Connection Pooling

DriverManager를 통한 커넥션 생성은 열고 닫는 데 시간이 걸린다. 따라서 커넥션 객체를 일정량 모아둔 Pool을 만들고 요청에 따라 커넥션 객체을 할당받고 다시 반납하는 방식이다. 커넥션 풀에는 여러가지 라이브러리가 있고, 직접 간단하게 구현을 해볼 수도 있다. 자세한 내용은 링크를 참고한다. 커넥션 풀을 사용할 때도 사용 완료한 커넥션은 close 해야된다는 사실을 잊으면 안된다.

참고자료

https://en.wikipedia.org/wiki/Java_Database_Connectivity

https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html

https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html

https://docs.oracle.com/javase/7/docs/api/java/sql/CallableStatement.html

https://androphil.tistory.com/763

https://www.baeldung.com/java-connection-pooling

댓글남기기