JDBCTemplate (jsp/servlet응용)
학습파일
JSP/SERVLET을 이해하는데 많은 시간이 들어가게 되었고
단계별로 나누어서 글작성을 해야한다는 필요성을 느끼게 되었다.
OJDBC사용
JDBC는 JAVA에서 종류상관없이 데이터베이스에 접근할 수 있게 해주는 API이다.
따라서 OJDBC 는 JAVA에서 오라클 데이터베이스에 접근할 수 있다.
- 프로젝트 내 JDBC 사용을 위해 우선 ojdbc.jar 파일을 WebContent/WEB-INF/lib/ 아래에 추가해준다.
JDBCTemplate
JDBC 사용 객체
- DriverManager
- Class.forName("oracle.jdbc.driver.OracleDriver") 메서드 사용시 DruverManager 객체가 생성된다.)
- Connection
- DB의 연결정보를 담고 있는 객체
- (Prepared)Statement
- DB에 SQL문을 전달하고 실행한 후 결과를 받아내는 객체
- Result Set 쿼리 된 결과를 받을 수 있는 객체
- SELECT문 실행 시 조회된 결과들이 담겨있는 객체
JDBC 실행 순서
- 변수세팅 Connection,statement,Result set ,int result
- 실행할 sql문 생성
- JDBC Driver 등록
- Connection 객체 생성
- Statement 객체 생성
- SQL문 전달 후 실행
- 결과 받기
- 자원반납
- 결과반환
이러한 반복되는 작업을 간소화 하기 위해 JDBCTemplate 클래스 파일을 생성하여 관리한다
JDBCTemplate에서 만들어 볼 것은
1.Connection 객체 생성 메서드(diver 정보 필요)
- properties 파일은
- 1.이클립스내 Untitled Text File 로 생성 또는
- 2.메모장으로 확장자를 .properties 인코딩UTF-8로 저장하면된다
- Class.forName(prop.getProperty("driver")); 구문은 properties 파일을 불러오는 코드이지만 아래와 같이 사용가능하다.
- Class.forName("oracle.jdbc.driver.OracleDriver");
- conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","오라클계정","오라클비밀번호");
2.Connection 객체 전달 받아 commit 또는 rollback 처리 해주는 메서드
*** 데이터 베이스 트랜잭션(TCL) DML 문은 사용자가 직접 commit과 rollback 처리를 해야한다***
관련링크 https://roqkfwkqmffhrm.tistory.com/77
SQL - TCL(COMMIT,ROLLBACK)
< TCL > - TRANSACTION CONTROL LANGUAGE 트랜젝션 제어 언어 1) 트랜젝션 (TRANSACTION) - 데이터베이스의 논리적 연산단위 - 데이터의 변경사항 (DML 추가 , 수정, 삭제)등을 하나의 트랜젝션에 묶어서 처리 - DML
roqkfwkqmffhrm.tistory.com
connection 객체 가 null이 아니거나 (DB연결정보가 들어갔는지 확인) 사용중이 아닐때 커밋
connection 객체 가 null이 아니거나 (DB연결정보가 들어갔는지 확인) 사용중이 아닐때 롤
3.Connection 객체 반납 메서드 > (Prepared)Statement 객체 반납 메서드> ResultSet객체 반납 메서드
추후 객체 사용 후 자원을 반납하지 않으면 DB 락이 걸릴 수 있다(동시 사용으로 인해 원자성 )
DB락은 여러 사용자들이 같은 데이터를 동시에 접근하는 상황에서
세션이 트랜잭션을 시작하고 데이터를 수정하는 동안에는
커밋이나 롤백 전까지 다른 세션에서 해당 데이터를 수정할 수 없게 막는 역할