HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📝
남득윤 학습 저장소
/
Jdbc-study
Jdbc-study
/
🤽
JDBC Connection을 얻는 법
🤽

JDBC Connection을 얻는 법

DriverManager

notion image
The basic service for managing a set of JDBC drivers.
notion image
  • 라이브러리에 등록된 DB 드라이버들을 관리하고, 커넥션을 획득하는 기능을 제공
 

ConnectionPool (Object Pool 패턴)

커넥션 풀 사용 전 (깡 DriverManager 만 활용)
  • 매 요청 마다 커넥션을 새로 생성, 종료
  • 커넥션을 생성하는 리소스는 매우 비싸다
    • TCP/IP 연결
 
notion image
 

커넥션 풀 도입
  • 서비스를 시작하는 시점에 커넥션 객체를 필요한 만큼 미리 생성하여 풀에 보관
  • 애플리케이션 로직은 커넥션을 사용하면 종료 시키는 것이 아니라 커넥션 풀에 반환함
  • e.g.) commons-dbcp2, tomcat-jdbc pool, HicariCP
See Also)

DataSource

  • 자바 표준 커넥션 풀 인터페이스
A factory for connections to the physical data source that this DataSource object represents. An alternative to the DriverManager facility, a DataSource object is the preferred means of getting a connection. - java.sql.DataSource javadoc
 
NOTE: The javax.sql.DataSource interface, provides another way to connect to a data source. The use of a DataSource object is the preferred means of connecting to a data source. - java.sql.DriverManager javadoc
 
  • DriverManager에서 직접, 혹은 HicariCP와 같은 커넥션 풀에서 Connection을 획득하는 방법에 대한 Facade
notion image
 
  • HikariDataSource
    • HikariCP의 DataSource 구현체
    • private final HikariPool fastPathPool;
      • HikariPool을 Wrapping 함
      • 실제 Connection은HikariPool.connectionBag 에 보관함
        • 동시성 처리등의 편의 제공
  • DriverManagerDataSource
    • spring이 제공하는 drivermanager를 직접 datasource로 wrapping 한datasource 구현체
    • 덕분에 drivermanager를 사용할 때도 커넥션 풀을 사용하는 것과 같은 인터페이스 (datasource)를 사용할 수 있다. (풀링 기능 X)
    •