D+32 [Loader, 트랜잭션, 커넥션 풀 ]
ResultSet 하면 select문 쓰겠다는 것
웹 어플리케이션 구동 시 JDBC 드라이버 로딩하기
ez>loader>Loader.java 만들기 : 예제12.8
- httpServlet 상속 : 클래스가 아니라 이제 서블릿이라고 부름 : init(ServletConfig) 오버라이딩함
- servelet : 자동으로 동작되게 함 - 서블릿이 동작하면 자동으로 메서드가 동작하게 함. 그러면 web.xml을 읽어들이게끔 만듦.
- stringTokenizer에 ","는 여러 드라이버 넣을 때 사용하라고 만든거임
12.9 예제 : <servelet></servelet>안에 들어가는 내용 적기 web.xml에 . Servelet-class에 내 서블렛 주소 넣기. 그리고 param-value에는 오라클 드라이버 집어넣어야 함
- load on startup 1 을 넣어야 자동으로 동작한다.
JDBC에서 트랜잭션 처리하기
* 데이터의 무결성을 위해 하나의 작업을 위한 쿼리는 트랜잭션으로 처리될 필요가 있다.
* 커밋: 5개의 쿼리가 성공적으로 동작되면 결과를 DB에 반영하는 것
* 롤백 : 5개 중 하나라도 에러가 발생하면 원상복구 시키는 것
* 트랜잭션 구현 방법 : 오토 커밋 해제, JTA 이용 방식
* JDBC API를 이용해서 한 개 이상의 쿼리를 트랜잭션으로 묶어서 처리하고 싶다면, Connection.setAutoCommit() 메서드에 false를 값으로 전달해서 트랜잭션을 시작하면 됨
커넥션 풀
* 데이터베이스와 연결된 커넥션을 미리 만들어서 풀(poop) 속에 저장해 두고 있다가 필요할 때에 커넥션을 풀에서 가져다 쓰고 다시 풀에 반환하는 기법
* 특징
- 커넥션을 생성하는데 드는 연결 시간이 소비되지 않는다.
- 커넥션을 재사용하기 때문에 생성되는 커넥션 수가 많지 않다.
DBCP API를 이용한 커넥션 풀 사용
- DriverManager.getConnection("jdbc:apache:commons:dbcp:/pool");
1) jar 파일 복붙 : web-INF에다가.
2) (java Resource) pool.jocl 파일 만들기 : src/main/java 에다가 만들기 : new > file > 파일 이름에 pool.jocl 하고 finish
- 4줄~9줄까지 변경하기.
- 4줄 : <object class="org.apache.commons.dbcp.DriverManagerConnectionFactory">
- 5줄 : <string value="jdbc:oracle:thin:@localhost:1521:XE"/>
3) (java Resource) DBCPInit.java : ez>loader 패키지 안에. 교재랑 똑같이 치면 됨.
4) web.xml에 내용 넣기 : class이름 바꾸기, <param-value> oracleDriver 맨날 쓰던거로 바꾸기.
작업하면 끝!
테스트하려면, viewMemberUsingPool.jsp 만들어서 테스트하기.
12.13에서 jdbcDriver 굳이 따로 만들지 말고, getConnection 뒤에 바로 쓰기
12장 JDBC
: Loader - 오라클 드라이버 로딩
: 트랜잭션
: 커넥션 풀
: anydesk 깔아서, 집에서 할때 안되면 쌤한테 원격으로 보여줄 수 있음.