커넥션 획득
public abstract class ConnectionConst {
public static final String URL ="jdbc:h2:tcp://localhost/~/test";
public static final String USERNAME = "sa";
public static final String PASSWORD = "";
}
public class DBConnectionUtil {
public static Connection getConnection() {
try {
Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("get connection={}, class={}", connection, connection.getClass());
return connection;
} catch (SQLException e) {
throw new IllegalStateException(e);
}
}
}
java.sql.DriverManager : 라이브러리에 등록된 DB 드라이버들을 관리하고 커넥션을 획득하는 기능을 제공
DriverManager.getConnection(..) : 라이브러리에 있는 데이터베이스 드라이버를 찾아 해당 드라이버가 제공하는 커넥션 구현체를 반환.
- 여기서는 URL이 H2 데이터베이스를 가리키므로 H2 드라이버가 작동하여 실제 데이터베이스와 커넥션을 맺고 그 결과 반환
- JDBC는
java.sql.DriverManager 표준 커넥션 인터페이스 정의
- H2 데이터베이스 드라이버는 JDBC Connection 인터페이스를 구현한
org.h2.jdbc.JdbcConnection 구현체를 제공
커넥션 획득 과정
- 애플리케이션 로직에서 커넥션이 필요할 때
DriverManager.getConnection(..) 호출
DriverManager는 라이브러리에 등록된 드라이버 목록을 자동으로 인식하고, 드라이버들에게 순서대로 다음 정보를 넘겨서 획득할 수 있는지 확인
- 각각의 드라이버는 전달받은 정보를 체크해서 본인이 처리할 수 있는 요청인지 확인
- 예를 들어, URL이
jdbc:h2로 시작하면 H2 데이터베이스에 접근하기 위한 규칙임
- 따라서 H2 드라이버는 실제 데이터베이스에 연결하여 커넥션을 획득
- 만약 URL이
jdbc:h2로 시작했는데 MySQL 드라이버가 먼저 실행되면 본인이 처리할 수 없다는 결과를 반환하여 다음 드라이버에게 순서가 넘어감
- 드라이버가 획득한 커넥션 구현체를 클라이언트에게 반환