스프링에서 트랜잭션을 처리하는 방법
1. 코드 기반 처리 방법 (기존 commit, rollback 을 이용)
2. 선언적 트랜잭션 처리방법 ( <tx: advice> xml 방식 / @Transactional 어노테이션 방식 )
※ 어노테이션 방식은 조건이 있다
2-1 트랜잭션 매니저가 Bean으로 등록 됨
2-2 <tx:annotation-driven /> 태그가 존재
@Transactional 어노테이션은 rollback을 위한 어노테이션이다
(커넥션 반환 시 아무 트랜잭션 처리가 되어있지 않다면 자동 commit이기 때문이다)
- 기본적으로 스프링은 SQLException 을 unChecked Exception ( 명시적으로 예외처리 안해도 됨 )
으로 바꿔놨기 떄문에 예외처리를 해놓지 않고 Exception 발생시 트랜잭션으로 rollback을 수행한다는 개념이다
2-1, 2-2 ->
root-context에 가서
1. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 스프링에서 사용하는 proxy를 이용한 트랜잭션 제어가 안될 경우 추가적인 트랜잭션 매니저를 추가해서 문제 해결 -->
2. namespace - tx 체크 후
<tx:annotation-driven /> 작성
=> @Transactional(rollbackFor = Exception.class)
rollbackFor 속성 : 어떤 예외 발생 시 롤백 수행할 지 지정
스프링에서 예외처리하는 방법
1. 메소드별 try-catch /throws 예외 처리
2. 컨트롤러 별로 예외 처리 -@ExceptionHandler
3. 전역(모든 클래스) 에서 발생하는 예외를 하나의 클래스에서 처리
'개발자로 업그레이드 되자 > SpringMVC' 카테고리의 다른 글
SPRING MVC에서 Mybatis 활용 (0) | 2022.01.13 |
---|---|
스프링 MVC - 이미지 업로드 / 파라미터 사용 DB삽입 (0) | 2022.01.11 |
스프링MVC - Mybatis (0) | 2022.01.06 |
스프링MVC - 파라미터 받기 (0) | 2022.01.06 |
스프링MVC - BCrypt 암호화 진행 (0) | 2022.01.06 |