커넥션 획득

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 구현체를 제공

커넥션 획득 과정

  1. 애플리케이션 로직에서 커넥션이 필요할 때 DriverManager.getConnection(..) 호출
  2. DriverManager는 라이브러리에 등록된 드라이버 목록을 자동으로 인식하고, 드라이버들에게 순서대로 다음 정보를 넘겨서 획득할 수 있는지 확인
    • url
    • username 및 password
  3. 각각의 드라이버는 전달받은 정보를 체크해서 본인이 처리할 수 있는 요청인지 확인
    • 예를 들어, URL이 jdbc:h2로 시작하면 H2 데이터베이스에 접근하기 위한 규칙임
    • 따라서 H2 드라이버는 실제 데이터베이스에 연결하여 커넥션을 획득
    • 만약 URL이 jdbc:h2로 시작했는데 MySQL 드라이버가 먼저 실행되면 본인이 처리할 수 없다는 결과를 반환하여 다음 드라이버에게 순서가 넘어감
  4. 드라이버가 획득한 커넥션 구현체를 클라이언트에게 반환

+ Recent posts