171120 Connection Pool - RYUDONGJIN/Memo_wiki GitHub Wiki
- JDBC๋ฅผ ํตํ์ฌ DB์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์๋ ๋๋ผ์ด๋ฒ(Driver)๋ฅผ ๋ก๋ํ๊ณ ์ปค๋ฅ์ (connection) ๊ฐ์ฒด๋ฅผ ๋ฐ์์์ผ ํ๋ค.
- JDBC๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์๊ฐ ์์ฒญ์ ํ ๋๋ง๋ค ๋งค๋ฒ ๋๋ผ์ด๋ฒ๋ฅผ ๋ก๋ํ๊ณ ์ปค๋ฅ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ์ฐ๊ฒฐํ๊ณ ์ข ๋ฃํด์ ๋นํจ์จ์
- ์ด๋ฐ ๋ฌธ์ ํด๊ฒฐ์ ์ํด ์ปค๋ฅ์ ํ(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();
}
}