개발자의 끄적끄적

[JSP] JDBC 에서의 트랜잭션 처리 [펌] 본문

개발/java & jsp

[JSP] JDBC 에서의 트랜잭션 처리 [펌]

효벨 2020. 8. 4. 02:00
728x90
반응형

[JSP] JDBC 에서의 트랜잭션 처리 [펌]

 

JDBC 에서의 트랜잭션(Transaction) 처리

 

 

트랜잭션(Transaction)은 여러 단계의 작업을 하나로 처리하는 것으로, 하나로 인식된 작업이 모두 성공적으로 끝나면 commit이 되고, 하나라도 문제가 발생하면 rollback 되어서 작업을 수행하기 전단계로 모든 과정이 회수된다.

 

이것이 트랜잭션이다. 즉, 트랜잭션은 프로그램의 신뢰도를 보장하게 된다.

 

JSP에서도 트랜잭션 처리에 대한 메소드들을 제공한다.

 

대표적인 예가 쇼핑몰에서 물건을 구매하는 과정이다. 물건을 장바구니에 넣은 후, 구매를 누르면 구매의 단계가 이루어지는데 먼저 구매할 물건을 선택하고 개인정보를 입력하고, 결제를 하게 되는데, 이들 단계 중 하나라도 잘못되면 모든 과정이 처음 장바구니로 돌아간다.

이것은 트랜잭션에 의해 구매 과정의 신뢰도를 보장하기 위한 것이다.

 

* 트랜잭션을 위한 메소드 : commit(), rollback()

 

JDBC API의 Connection 객체는 commit() 메소드와 rollback() 메소드를 제공한다.

 

- commit() : 트랜잭션(Transaction)의 commit 을 수행한다.

- rollback() : 트랜잭션(Transaction)의 rollback 을 수행한다.

 

기본적으로 Connection 객체에 setAutoCommit(boolean autoCommit) 이란 메소드가 있는데 기본값이 true 로 설정이 되어 있다. 기본적으로 JSP 는 오토커밋(Autocommit)이다. commit 이 자동으로 수행된다.

 

그러나 트랜잭션(Transaction)을 처리할 때는 오토커밋이 일어나서 자동으로 commit을 사용하면 안 된다. 여러 개의 쿼리 문장이 하나의 작업으로 수행되어야 하기 때문에 JSP의 오토커밋이 자동으로 작동되지 못하게 해야한다.

 

오토커밋이 자동으로 작동되지 못하게 하려면 setAutoCommit(false); 로 지정해야 한다.

 

 

 

- JDBC 트랜잭션(Transaction) 예제

 

Connection conn = null;                                        // null로 초기화 한다.

PreparedStatement pstmt = null;

 

try{

.....

conn.setAutoCommit(false);                        // 오토커밋을 false로 지정한다.

 

pstmt.executeUpdate("update .... ");            // 각 쿼리를 실행한다.

pstmt.executeUpdate("insert ....");

pstmt.executeUpdate("delete ... ");

 

.....

 

conn.commit();                                       // 실행된 결과를 commit() 한다.

 

...

}catch(SQLException sqle){

if(conn!=null) try{conn.rollback();}catch(SQLException sqle){}            // Exception 발생시 rollback 한다.

}

 

conn.setAutoCommit(true);                        // 오토 커밋을 true로 다시 변경한다.



출처: https://hyeonstorage.tistory.com/113 [개발이 하고 싶어요]

반응형
Comments