171120 Connection Pool - RYUDONGJIN/Memo_wiki GitHub Wiki

์ปค๋„ฅ์…˜ํ’€(DBCP) ์‚ฌ์šฉ์ด์œ 

  • JDBC๋ฅผ ํ†ตํ•˜์—ฌ DB์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋“œ๋ผ์ด๋ฒ„(Driver)๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ปค๋„ฅ์…˜(connection) ๊ฐ์ฒด๋ฅผ ๋ฐ›์•„์™€์•ผ ํ•œ๋‹ค.
  • JDBC๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญ์„ ํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ปค๋„ฅ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๊ณ  ์ข…๋ฃŒํ•ด์„œ ๋น„ํšจ์œจ์ 
  • ์ด๋Ÿฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์œ„ํ•ด ์ปค๋„ฅ์…˜ํ’€(DBCP)์‚ฌ์šฉ

์ปค๋„ฅ์…˜ํ’€(DBCP)

  • ์›น ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๋ฉด์„œ ์ปค๋„ฅ์…˜(connection)๊ฐ์ฒด๋ฅผ ๋ฏธ๋ฆฌ ํ’€(pool)์— ์ƒ์„ฑ
  • DB์™€ ์—ฐ๊ฒฐ๋œ ์ปค๋„ฅ์…˜์„ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด์„œ pool ์†์— ์ €์žฅํ•ด ๋‘๊ณ  ์žˆ๋‹ค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๊ฐ€์ ธ๋‹ค ์“ฐ๊ณ  ๋ฐ˜ํ™˜
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ถ€ํ•˜๋ฅผ ์ค„์ด๊ณ  ์œ ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌ

server.xml ๋‚ด์šฉ ์ˆ˜์ •

<Context docBase="DataBase" path="/DataBase" reloadable="true" source="org.eclipse.jst.jee.server:DataBase" >
	<Resource name="jdbc/pool" auth="Container" type="javax.sql.DataSource" 
		driverClassName="oracle.jdbc.driver.OracleDriver" loginTimeout="10" maxWait="5000"
		username="system" password="123456" url="jdbc:oracle:thin:@localhost:1522:XE" />
</Context>

์ปค๋„ฅ์…˜ ๋ฉ”์†Œ๋“œ ์ƒ์„ฑ

        Connection con;//๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •
	PreparedStatement pstmt; //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ๊ฐ์ฒด
	ResultSet rs; //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ด๋ฐ›์•„ ์ž๋ฐ”์— ์ €์žฅํ•ด์ฃผ๋Š” ๊ฐ์ฒด	
	
	//๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ฉ”์†Œ๋“œ
	public void getCon() {
		//์ปค๋„ฅ์…˜ํ’€์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผ
		try {
			//์™ธ๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋“œ๋ ค์•ผ ํ•˜๊ธฐ์—
			Context initctx = new InitialContext();
			//ํ†ฐ์บฃ ์„œ๋ฒ„์— ์ •๋ณด๋ฅผ ๋‹ด์•„๋†“์€ ๊ณณ์œผ๋กœ ์ด๋™
			Context envctx = (Context) initctx.lookup("java:comp/env");
			//๋ฐ์ดํ„ฐ ์†Œ์Šค ๊ฐ์ฒด๋ฅผ ์„ ์–ธ
			DataSource ds = (DataSource) envctx.lookup("jdbc/pool");
			//๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ปค๋„ฅ์…˜์„ ์—ฐ๊ฒฐํ•ด์ฃผ์‹œ์˜ค
			con = ds.getConnection();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
โš ๏ธ **GitHub.com Fallback** โš ๏ธ