๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CS/Database

DBCP(DataBase Conncetion Pool), ์ปค๋„ฅ์…˜ํ’€ ์ด๋ž€?

by ์ฃผ๋ฐœ2 2021. 8. 10.
๋ฐ˜์‘ํ˜•

๐Ÿ“Ž  DBCP(DataBase Connection Pool)

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด๋ฒˆ์— ์ •๋ฆฌํ•  ๋‚ด์šฉ์€ DBCP(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ ํ’€) ์ž…๋‹ˆ๋‹ค.

 

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์‚ฌ์ด๋“œ์ธ ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์— ๋”ฐ๋ผ Connection์ด ์ƒ์„ฑ๋œ๋‹ค๋ฉด ์ˆ˜ ๋งŽ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ํ–ˆ์„ ๋•Œ ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ์ผ์ • ๊ฐฏ์ˆ˜์˜ Connection์„ ๋งŒ๋“ค์–ด Pool์— ์ €์žฅ์„ ํ•˜๊ณ , ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์ด ๋ฐœ์ƒํ•˜๋ฉด Connection์„ ์ œ๊ณตํ•˜๊ณ  ์‚ฌ์šฉ์ž์™€์˜ ์—ฐ๊ฒฐ์ด ์ข…๋ฃŒ๋œ๋‹ค๋ฉด Pool์— ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ณด๊ด€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

์ฆ‰, Connection Pool์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ DB Connection์„ ํ•˜๋‚˜์˜ Pool์— ๋ชจ์•„๋†“๊ณ  ๊ด€๋ฆฌ
  • DB ์ปค๋„ฅ์…˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ƒ์„ฑํ•œ ๋’ค Pool์— ๋‹ด์•„๋†“๊ณ  ํ•„์š”ํ•  ๋•Œ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉ
  • ๋งŒ์•ฝ, ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” Connection์ด ์—†๋‹ค๋ฉด Connection ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜ํ•  ๋•Œ ๊นŒ์ง€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ์ „ํ™˜
  • ์‚ฌ์šฉ์ด ๋๋‚œ ์ปค๋„ฅ์…˜ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ์ž‘์—…์—์„œ ๋‹ค์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Pool์— ๋ฐ˜ํ™˜

 

 

 

๐Ÿค”  ๊ทธ๋Ÿผ, ์ด๋Ÿฌํ•œ DBCP(DataBase Connection Pool)์€ ์™œ ํ•„์š”ํ•œ ๊ฑธ๊นŒ์š”?

์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ CRUD์™€ ๊ฐ™์€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.

DBMS๋‚˜ ๊ธฐํƒ€ ์™ธ๋ถ€์™€์˜ ์ ‘์†์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ•„์š”ํ•œ ์‹œ์Šคํ…œ์—๋Š” ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ Connection์„ ๋งบ๋Š” ์ž‘์—…์€ ๋งค์šฐ ๋Š๋ฆฌ๋ฉฐ ์ž์›์„ ๋งŽ์ด ์†Œ๋ชจํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ด์™€ ๊ฐ™์ด ์„œ๋ฒ„๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜์–ด Connection์„ ๋งบ๋Š” ์ž‘์—…์€ ๋น„์šฉ์ด ํฐ ๋ถ€๋ถ„ ์ž…๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ, ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋“ค์ด ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ Connection ์—ฐ๊ฒฐ์„ ์š”์ฒญํ•œ๋‹ค๋ฉด ์ตœ์•…์˜ ๊ฒฝ์šฐ ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Ÿฌํ•œ ํฐ ๋น„์šฉ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DBCP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

https://beaniejoy.tistory.com/24

์œ„ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด Pool์„ ๋งŒ๋“ค์–ด์„œ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•œ ์—ฌ๋Ÿฌ Connection ๊ฐ์ฒด๋ฅผ ๋‹ด์•„๋‘๊ณ  ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•  ๋•Œ ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋นŒ๋ ค์ค๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉ์„ ๋งˆ์นœ ํ›„์—๋Š” Pool์— ๋‹ค์‹œ Connection ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ์š”์ฒญ์ด ์กด์žฌํ•˜๋”๋ผ๋„

์ƒˆ๋กœ์šด Connection ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

์•ž์—์„œ ๋ง์”€๋“œ๋ฆฐ ๋Œ€๋กœ ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๋“ค์ด ๋™์‹œ๋‹ค๋ฐœ์ ์œผ๋กœ ์š”์ฒญํ•ด์„œ Pool์— ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ปค๋„ฅ์…˜์„ Pool์— ๋ฐ˜ํ™˜ํ•  ๋•Œ๊นŒ์ง€ ์š”์ฒญํ•œ ํด๋ผ์ด์–ธํŠธ๋Š” ๋Œ€๊ธฐ์ƒํƒœ๋กœ ์ „ํ™˜์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ ํ›„ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ปค๋„ฅ์…˜์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด, ๋Œ€๊ธฐ์ƒํƒœ์ธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•ด๋‹น ์ปค๋„ฅ์…˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

๐Ÿค”  DBCP(DataBase Connection Pool)์˜ ์˜ต์…˜

์ด์ œ๊นŒ์ง€ DBCP์˜ ๊ฐœ๋…๊ณผ ๊ตฌ์กฐ, ์‚ฌ์šฉ ์ด์œ ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Apache์˜ Commons DBCP์˜ ๊ฒฝ์šฐ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.(Commons DBCP 1.x ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.)

โ€ป Commons DBCP๋Š”, ์ปค๋„ฅ์…˜ ํ’€ ๊ตฌํ˜„์ฒด์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ์˜คํ”ˆ์†Œ์Šค ์ž…๋‹ˆ๋‹ค.

Parameter(๋ฒ„์ „) Default Description
initialSize 0 ์ตœ์ดˆ ์ปค๋„ฅ์…˜์„ ๋งบ์„ ๋•Œ Connection Pool์— ์ƒ์„ฑ๋˜๋Š” ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜
maxActive (1.x)
maxTotal (2.x)
8 ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜
maxIdle 8 Connection Pool์— ๋ฐ˜๋‚ฉํ•  ๋•Œ ์ตœ๋Œ€๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜
minIdle 0 ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€ํ•  ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜
maxWait (1.x)
maxWaitMillis (2.x)
indefinitely Pool์ด ์˜ˆ์™ธ๋ฅผ throwํ•˜๊ธฐ ์ „ ์—ฐ๊ฒฐ์ด ๋ฐ˜ํ™˜๋  ๋•Œ๊นŒ์ง€(์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Connection ๊ฐ์ฒด๊ฐ€ ์—†๋Š”๊ฒฝ์šฐ) ๋Œ€๊ธฐํ•˜๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„(ms) ๋˜๋Š” ๋ฌดํ•œ ๋Œ€๊ธฐ(-1)

 

์œ„์™€ ๊ฐ™์€ ์„ค์ • ์™ธ์—๋„ validationQuery, testOnCreate, testOnBorrow, testOnReturn, defaultAutoCommit, defaultReadOnly ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ์„ค์ •์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

๋‹ค์–‘ํ•œ ์„ค์ •์ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด Apache์˜ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š” :)

 

 

 

๐ŸŽฏ  ์ปค๋„ฅ์…˜ ๊ฐฏ์ˆ˜์™€ ๊ด€๋ จ๋œ ์†์„ฑ ๋ฐ ์กฐ๊ฑด

maxActive >= initialSize

  • ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜(maxActive)๊ฐ€ 10์ด๊ณ , ์ตœ์ดˆ ์ปค๋„ฅ์…˜์„ ๋งบ์„ ๋•Œ Pool์— ์ƒ์„ฑ๋˜๋Š” ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜(initialSize)๊ฐ€ 20๊ฐœ๋ผ๋ฉด, initialSize ๊ฐ’์ด ์ตœ๋Œ€ ์ปค๋„ฅ์…˜ ๊ฐฏ์ˆ˜์ธ maxActive ๊ฐ’๋ณด๋‹ค ์ปค์„œ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์„ค์ •์ž…๋‹ˆ๋‹ค.

maxIdle >= minIdle

  • ๋‹น์—ฐํ•˜์ง€๋งŒ ์ตœ๋Œ€๋กœ ์œ ์ง€ํ•  ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์ตœ์†Œํ•œ์œผ๋กœ ์œ ์ง€๋  ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜๋ณด๋‹ค ๋งŽ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

maxActive = maxIdle

  • maxActive์™€ maxIdle ๊ฐ’์ด ๋™์ผํ•œ ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜(maxActive)๊ฐ€ 20์ด๊ณ , Pool์— ๋ฐ˜๋‚ฉํ•  ๋•Œ ์ตœ๋Œ€๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜(maxIdle)๊ฐ€ 10์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปค๋„ฅ์…˜์„ ๋™์‹œ์— 10๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ƒํ™ฉ์—์„œ 1๊ฐœ์˜ ์ปค๋„ฅ์…˜์ด ์ถ”๊ฐ€๋กœ ์š”์ฒญ๋œ๋‹ค๋ฉด maxActive = 20์ด๋ฏ€๋กœ 1๊ฐœ์˜ ์ถ”๊ฐ€ ์ปค๋„ฅ์…˜์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•œ ํ›„ Pool์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์œผ๋กœ ์ปค๋„ฅ์…˜์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ปค๋„ฅ์…˜์„ ์‚ฌ์šฉํ•œ ํ›„ Pool์— ๋ฐ˜๋‚ฉํ•  ๊ฒฝ์šฐ, maxIdle = 10์ด๋ฏ€๋กœ ์ปค๋„ฅ์…˜์„ ์‹ค์ œ๋กœ ๋‹ซ์•„๋ฒ„๋ฆฌ๋ฏ€๋กœ, ์ผ๋ถ€ ์ปค๋„ฅ์…˜์„ ๋งค๋ฒˆ ์ƒ์„ฑํ–ˆ๋‹ค ๋‹ซ๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

initialSize = maxActive = maxIdle = minIdle

  • ์œ„ ๋„ค ๊ฐ€์ง€์˜ ์„ค์ •์€ ๋™์ผํ•œ ๊ฐ’์œผ๋กœ ํ†ต์ผํ•ด๋„ ๋ฌด๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅ์…˜ ๊ฐฏ์ˆ˜์™€ ๊ด€๋ จ๋œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์„ฑ๋Šฅ ์š”์†Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ปค๋„ฅ์…˜์˜ ์ตœ๋Œ€ ๊ฐฏ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ ํ•ญ๋ชฉ์˜ ์„ค์ • ๊ฐ’ ์ฐจ์ด๋Š” ์„ฑ๋Šฅ์„ ์ขŒ์šฐํ•˜๋Š” ์ค‘์š” ๋ณ€์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

maxActive

  • maxActive์˜ ๊ฐ’์€ DBMS์˜ ์„ค์ •๊ณผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ๊ฐฏ์ˆ˜, Apache, Tomcat ๋“ฑ์—์„œ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ˆ˜ ๋“ฑ์„ ๊ณ ๋ คํ•ด์„œ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. DBMS๊ฐ€ ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ํ™•์ธํ•œ ํ›„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค 1๊ฐœ๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ์ ˆํ•œ ๊ฐฏ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‹ค์ˆ˜์˜ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์ปค๋„ฅ์…˜์„ ๋งŽ์ด ์‚ฌ์šฉํ•  ๋•Œ maxActive์˜ ๊ฐ’์ด ์ถฉ๋ถ„ํžˆ ํฌ์ง€ ์•Š๋‹ค๋ฉด ๋ณ‘๋ชฉ ์ง€์ ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์‚ฌ์šฉ์ž๊ฐ€ ์ ์–ด์„œ ์‚ฌ์šฉ์ค‘์ธ ์ปค๋„ฅ์…˜์ด ๋งŽ์ง€ ์•Š์€ ์‹œ์Šคํ…œ์—์„œ๋Š” maxActive ๊ฐ’์„ ์ง€๋‚˜์น˜๊ฒŒ ์ž‘๊ฒŒ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ ์„ฑ๋Šฅ์—๋Š” ํฐ ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค.

 

 

์ด์ƒ์œผ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ DBCP์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

์ด๋ก ์ ์œผ๋กœ๋งŒ ์ •๋ฆฌ๋ฅผ ํ•˜์˜€์œผ๋ฉฐ ์‹ค์ œ๋กœ๋Š” DBMS์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ ์ž์›, ๊ธฐํƒ€ ์˜ˆ์™ธ ์ƒํ™ฉ, Tomcat ์„ค์ •, ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ, TPS ๋“ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์„ค์ •์„ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Commons DBCP์™€ ๊ฐ™์€ ์ปค๋„ฅ์…˜ ํ’€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์— ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋ถ„ํ•œ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ํˆฌ์žํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋งŒ์•ฝ ์‹ค๋ฌด์—์„œ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์ง์ ‘์ ์œผ๋กœ DBCP์˜ ์„ค์ •์„ ์†๋Œ€์•ผ ํ•  ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ์ข€ ๋” ์ž์„ธํžˆ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

Commons DBCP์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ฆฌ๋Š” ๋‹ค์Œ ํฌ์ŠคํŒ…์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

https://d2.naver.com/helloworld/5102792

 

 


References

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€