Spring @Transactional Propagation
Spring Framework에서 제공하는 트랙잭션의 기능인 전파에 대해 알아보자. 결제, 예약 등과 같이 트랙잭션을 세밀하게 컨트롤을 해야하는 서비스 반드시 알아야되는 내용 중이 하나이다. 어노테이션의 해당하는 옵션은 propagation 필드이다.
REQUIRED
- Transaction이 없는 경우에는 새롭게 생성을 한다.
- Method 2가 실행이 되는 경우에는 Transaction이 생성된 것을 사용한다.
REQUIRES_NEW
- 새로운 Transaction을 생성을 한다.
- Tip (2018/11/27 추가)
- Transcation 1이 길어지는 경우가 발생이 될수도 있다 이럴 경우에는 Long Transaction이기 때문에 DB가 Restart가 될수가 있다.
- Transaction을 쪼개는 것이 중요!
SUPPORTS
- 기존 Transaction을 유지를 하고, 없으면 Non-Transaction 상태로 실행한다.
MANDATORY
- 반드시 Transaction이 있어야 된다, 없으면 에러가 발생이 된다.
NESTED
- Transaction있는 경우 해당하는 Transaction을 활용한다. (= required )
NEVER
- Transaction 없이 실행한다. 있는 경우에는 에러가 발생이 된다.
NOT_SUPPORTED
- Transaction 없이 실행한다. 있는 경우에 해당하는 Transaction 을 중지하고 실행한다.
'Programing > Spring Framework' 카테고리의 다른 글
Spring 자체 인스턴스화 된 객체에 종속성을 주입하는 방법 (0) | 2018.10.20 |
---|---|
Spring Bean Life Cycle (0) | 2018.09.21 |
Spring Constructor Dependency Injection (0) | 2018.09.06 |
Spring JDBC (0) | 2018.08.23 |
Attribute Converter를 이용한 커스텀 컬럼 사용하기 (0) | 2017.08.06 |