๐Ÿคฝ

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)
    •