[Spring] 트랜잭션
2020. 7. 30. 18:12ㆍSpring/Spring
1. AOP 트랜잭션
1) 설정 파일
tx 네임스페이스를 추가한다.
/src/main/resources/
applicationContext.xml
2) 트랜잭션 관리자 클래스 등록
모든 트랜잭션 관리자는 PlatformTransactionManager 인터페이스를 구현한 클래스들이다. 다양한 클래스들 중, 현재 프로젝트가 JDBC 기반으로 동작하기 때문에 DataSourceTransactionManager 클래스를 이용하여 트랜잭션 처리한다.
/src/main/resources/
applicationContext.xml
3) 어드바이스 설정
트랜잭션 관리 어드바이스는 <tx:advice> 엘리먼트를 이용하여 설정한다.
/src/main/resources/
applicationContext.xml
<tx:method> 속성 | 설명 |
name | 트랜잭션이 적용될 메서드 이름 지정 |
read-only | 읽기 전용 여부 지정 |
no-rollback-for | 트랜잭션을 롤백하지 않을 예외 지정 |
rollback-for | 트랜잭션을 롤백하라 예외 지정 |
4) 트랜잭션 적용
기존에는 <aop:aspect> 엘리먼트를 이용하여 어드바이스를 설정했지만, 트랜잭션의 경우 <aop:advisor> 엘리먼트를 사용한다. <aop:advisor> 엘리먼트를 사용하는 이유는 <tx:advice> 설정으로 스프링 컨테이너가 자동으로 생성하기 때문에 어드바이스 메서드 이름을 알 수 없기 때문이다.
/src/main/resources/
applicationContext.xml
5) 트랜잭션 수행
등록 쿼리문을 수행할 때, 자동으로 PK 컬럼(SEQ)의 값이 증가하지 않도록 수정하고, PK 컬럼(SEQ)에 동일한 값을 넣어 예외를 발생시켜 롤백 처리를 확인한다.
/src/main/java/
BoardServiceImpl.java, BoardDAOSpring.java
예외 발생 전/후, 구현 화면
[참고] 스프링 퀵 스타트
728x90
'Spring > Spring' 카테고리의 다른 글
[Spring] Model 아키텍처 (2) (0) | 2020.07.31 |
---|---|
[Spring] Model 아키텍처 (1) (0) | 2020.07.30 |
[Spring] JdbcTemplate (0) | 2020.07.30 |
[Spring] AOP 어노테이션 (0) | 2020.07.29 |