Server | JSP | SERVLET/server

JDBCTemplate (jsp/servlet응용)

규율 위에 자유 2023. 8. 26. 18:10

학습파일

JDBCTemplate.java
0.00MB

 

 

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락은 여러 사용자들이 같은 데이터를 동시에 접근하는 상황에서

세션이 트랜잭션을 시작하고 데이터를 수정하는 동안에는

커밋이나 롤백 전까지 다른 세션에서 해당 데이터를 수정할 수 없게 막는 역할