728x90
DB 커넥션 풀
- 웹 어플리케이션 서버가 시작될 때 데이터베이스와 일정 수의 커넥션을 미리 생성
- 웹 어플리케이션의 요청에 따라 생성된 커넥션 객체를 전달
- 일정 수 이상의 커넥션이 사용되면 새로운 커넥션을 만든다
- 사용하지 않는 커넥션은 자동으로 종료하고 최소한의 기본 커넥션만을 유지
-
커넥션 풀 구현 유형
- 직접 : javax.sql.DataSource 인터페이스 구현 또는 아에 새로운 형식으로 구현
-
아파지 자카르타 DBCP API를 이용한 구현
- 톰캣 5.5 이상에 기본으로 포함
-
애플리케이션 서버에서 제공하는 커넥션 풀 사용
- javax.sql.DataSource 인터페이스를 따르는 커넥션 풀을 제공함
- JNDI 네이밍 서비스를 이용해 사용
- 프레임워크 제공 : 스트러츠와 같은 프레임워크에서 제공하는 커넥션 풀 사용
-
톰캣에서 DataSource 설정
-
server.xml 설정 : <context> 태그 안에 <resource> 태그로 설정
- <Resource name="jdbc/oracle" auth="Container" type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521" username="jspbook" password="1234" maxActive="5" maxIdle="3" maxWait="-1" />
-
web.xml 에 JNDI 연결을 위한 설정 추가
- <resource-ref>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
- <resource-ref>
-
-
커넥션 풀 사용
-
JNDI 서비스를 통해 DataSource 객체 참조
- Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/oracle");
conn = ds.getConnection();
- Context initContext = new InitialContext();
-
트랜잭션
- 데이터베이스에서 일련의 작업을 하나로 묶어서 처리하는 것 - 데이터의 무결성 보장을 위해
- commit : 데이터베이스에 트랜잭션이 완료되었음을 알리는 명령
- rollback : 트랜잭션을 취소하는 명령
-
JDBC 는 한 문장을 수행할 때마다 자동으로 commit 되도록 설정되어 있음
- conn.setAutoCommit(false); //auto commit mode 해제
- conn.commit();
- conn.rollback();
-
일괄 갱신 : JDBC 2.0 에서 추가
- // for Statement object
- stmt.addBatch("insert into...");
stmt.addBatch("update table2 set ..");
int [] cnt = stmt.executeBatch(); - // for PreparedStatement object
- pstmt.setString(1, "string");
...
pstmt.addBatch();
..
int [] cnt = pstmt.executeBatch();
728x90
'JAVA' 카테고리의 다른 글
java.sql.SQLException: 데이터 크기가 해당 유형의 최대 크기보다 큽니다 (0) | 2012.07.29 |
---|---|
cannot cast from ActionForm to *form (0) | 2012.07.29 |
javax.servlet.jsp.PageContext cannot be resolved to a type (0) | 2012.07.29 |
Cannot find the class file for javax.servlet.http.HttpServletRequest (0) | 2012.07.29 |
java.lang.IndexOutOfBoundsException (0) | 2012.07.29 |