[Spring] Transaction Manager 을 이용한 원자성유지
메소드에서 2개 이상의 Transaction이 일어날수 있다(게시판 테이블에 내용기록후 파일 테이블에 첨부파일 내용 기록시). 데이터베이스의 ACID 에서 원자성을 유지할수 있는방법이다. 물론 정상적인 상황에서 이러한일이 많이 일어나진 않겠지만. 만일이라는게 있다. SimpleJdbcTemplate 를 기준으로 작성하였다.
클래스를 사용하기 위해 xml 을 편집한다.
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean>
사용하고자 하는 Dao Class 에 대해 Property 를 set 해준다.
<property name="transactionManager" ref="transactionManager"></property>
사용하자고 하는 Dao class 에 TransactionManager 를 멤버변수로 선언후 setter 를 생성해준다
private PlatformTransactionManager transactionManager; public void setTransactionManager(PlatformTransactionManager transactionManager) { this.transactionManager = transactionManager; }
실제 처리가 이루어지는 로직에 다음과 같이 코딩한다. 기본트랜잭션 정의를 로드하여 사용하였다..
TransactionDefinition def = new DefaultTransactionDefinition(); TransactionStatus status = transactionManager.getTransaction(def); try { getSimpleJdbcTemplate().update(1번 sql); getSimpleJdbcTemplate().update(2번 sql); transactionManager.commit(status); System.out.println("트랜잭션 완료"); } catch(DataAccessException ex){ transactionManager.rollback(status); System.out.println("롤백 됨"); }
댓글
이 글 공유하기
다른 글
-
[Spring] Tiles Library 사용하기
[Spring] Tiles Library 사용하기
2014.08.03 -
[Spring] JDBC template
[Spring] JDBC template
2014.07.29 -
[Spring] 인코딩(UTF-8) 필터 클래스 장착하기
[Spring] 인코딩(UTF-8) 필터 클래스 장착하기
2014.07.29 -
[Spring] Annotation 을 이용한 컨트롤러 맵핑
[Spring] Annotation 을 이용한 컨트롤러 맵핑
2014.07.29