Spring Framework와 함께 백엔드를 구현하면서 트랜잭션 처리를 위해 자주 사용하는 어노테이션인 @Transactional
자세히 보니 두 가지 종류가 있었습니다. 어떤 걸 사용해야 하는지 궁금증이 생겨 알아보았습니다.
결론부터 말씀드리자면 Spring Framework에서 지원하는 @Transactional 어노테이션을 사용하는 것을 권장드립니다. (@org.springframework.transaction.annotation.Transactional)
두 어노테이션 모두 동일한 기본 기능을 제공합니다. 하지만, Spring에서 지원하는 @Transactional이 더 많은 부가 기능을 가지고 있습니다.
만약 트랜잭션 관련 옵션들을 사용하지 않고, Spring의 버전이 4.0이상이라면 어느 것을 사용하더라도 상관이 없습니다.
그렇다면 Spring Framework의 @org.springframework.transaction.annotation.Transactional의 관련 옵션들을 무엇일까요?
공식문서에 따르면,
옵션명 | 기능설명 |
---|---|
isolation | Transaction의 Isolation level을 설정한다. |
label | Transaction label을 설정한다. |
noRollbackFor | transaction rollback 처리가 되지 않아야 할 예외 클래스를 명시한다. |
noRollbackForClassName | transaction rollback 처리가 되지 않아야 할 예외 클래스 이름을 명시한다. |
propagation | Transaction Propagation 타입을 설정한다. |
readOnly | Transaction을 readOnly로 설정한다. |
rollbackFor | transaction rollback이 되어야하는 예외 클래스를 명시한다. |
rollbackForClassName | transaction rollback이 되어야하는 예외 클래스 이름을 명시한다. |
timeout | Transaction의 Timeout을 설정한다. (단위 : 초,seconds) |
timeoutString | Transaction의 Timeout을 설정한다. (단위 : 초,seconds) |
transactionManager | 특정 Transaction의 qualifier value를 설정한다. |
value | transactionManager의 alias(별칭)을 설정한다. |
@Transactional 어노테이션에 대해 공부하면서 작성한 글입니다. 잘못된 내용이나 오타가 있다면 댓글로 알려주시면 감사하겠습니다 :)