Programing/Spring Framework
Spring @Transactional Propagation
BUST
2018. 9. 10. 21:43
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 을 중지하고 실행한다.