Programing/Spring Framework

Spring @Transactional Propagation

BUST 2018. 9. 10. 21:43

Spring @Transactional Propagation

Spring Framework에서 제공하는 트랙잭션의 기능인 전파에 대해 알아보자. 결제, 예약 등과 같이 트랙잭션을 세밀하게 컨트롤을 해야하는 서비스 반드시 알아야되는 내용 중이 하나이다. 어노테이션의 해당하는 옵션은 propagation 필드이다.

REQUIRED

tx prop required
  • Transaction이 없는 경우에는 새롭게 생성을 한다.
  • Method 2가 실행이 되는 경우에는 Transaction이 생성된 것을 사용한다.

REQUIRES_NEW

tx prop 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 을 중지하고 실행한다.