커넥션풀(DBCP)
DB커넥션풀 사용이유
jdbc 를 통해 db에 연결하기 위해서는
드라이버를 로드하고 //Class.forName( 드라이버명 );
커넥션 객체를 받아와야한다 // Connection con = DriverManager.getConnection(url, id, password);
사용자가 요청할 때마다 매번 위 과정을 반복하는 것은 비효율적이므로 커넥션풀을 사용한다.
커넥션풀
(웹 서버 내의)웹컨테이너가 실행되면서 커넥션을 pool에 미리 만들어두고 필요할 때 가져다 쓰고 반환
미리 생성해두기 때문에 데이터베이스에 부하를 줄이고 유동적으로 연결을 관리
커넥션 풀 사용하기
웹컨테이너(웹서버)에서 pool을 생성
사용중인 Servers 폴더의 server.xml 소스코드 아래쪽에
1 2 | <Context docBase="JspStudy" path="/JspStudy" reloadable="true" source="org.eclipse.jst.jee.server:JspStudy" /> | cs |
끝에 닫는 '/'를 지워주고 </Context>닫아준 뒤
1 2 3 4 5 6 | <Context docBase="JspStudy" path="/JspStudy" reloadable="true" source="org.eclipse.jst.jee.server:JspStudy" > <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:1521:xe"/> </Context> | cs |
이름(기억해둘 것), "Container"가 관리, "javax.sql.DataSource" 객체를 이용해서 커넥션풀을 사용하겠다는 의미
Tip
e.printStackTrace();로 예외 처리를 해주었는데도 어디서 오류가 났는지 정확히 알 수 없다면
매 코드마다 System.out.println("오류확인 n"); 을 달아서 실행해본다
커넥션풀 사용하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public void getCon() { try{ //외부에서 데이터를 읽어들여야한다 Context initctx = new InitialContext(); //InitialContext() 클래스는 Context 인터페이스 구현클래스 //톰캣 서버의 정보를 담아놓은 곳으로 이동 Context envctx = (Context) initctx.lookup("java:comp/env"); //데이터소스 객체(javax.sql.DataSource)를 선언 //server.xml Context Resource에서 설정한 name을 매개값으로 준다. DataSource ds = (DataSource) envctx.lookup("jdbc/pool"); //Resource이름을 매개값으로 주어 DataResource객체를 리턴 //외부에서 데이터를 읽어들이는 Context 객체를 생성 //그 객체의 lookup메서드로 톰캣서버정보를 읽어들이고 //톰캣서버정보를 읽어들인 객체의 lookup메서드에 리소스이름을 매개값으로 주어 //데이터소스객체(커넥션풀 사용할때 쓰기로한 객체)를 얻는다 //(커넥션풀)데이터소스를 이용하여 접속 con = ds.getConnection(); } catch(Exception e) { e.printStackTrace(); } } |
'DB > Oracle' 카테고리의 다른 글
oracle 11g 트랜잭션 관리COMMIT ROLLBACKDML 인강 (0) | 2019.05.31 |
---|---|
Oracle sql developer tool : oracle developer the network adapter could not establish the connection (0) | 2019.05.28 |
JSP와 데이터베이스 연동-3 (0) | 2019.05.07 |
JSP와 데이터베이스 연동-2 (0) | 2019.05.06 |
JSP와 데이터베이스 연동-1 (0) | 2019.05.02 |