kotlin 으로 spring boot 를 사용해서 개발을 하던 중.
비슷한 기능을 파는 패키지인데.. 뭐가 다른걸까 한참 궁금해하다가 찾아보게 되었다.
1. 패키지 경로
- Jakarta: jakarta.transaction.Transactional
- Spring: org.springframework.transaction.annotation.Transactional
2. 주요 차이점
기능적 차이
- Jakarta @Transactional:
- Java EE(현재 Jakarta EE) 표준의 일부
- JTA(Java Transaction API) 기반 트랜잭션만 지원
- 더 기본적인 옵션 세트 제공
- Spring @Transactional:
- Spring 프레임워크 전용 구현
- 다양한 트랜잭션 관리자(JPA, JDBC, JTA 등) 지원
- 더 풍부한 기능과 속성 제공
jakarta.transaction.Transactional 의 경우는 기본 옵션이라고 생각하면 될것 같다.
org.springframework.transaction.annotation.Transactional 가 훨씬 다양하고 여러 기능을 제공한다.
나의 경우
@Transactional(value = Transactional.TxType.REQUIRES_NEW)
해당 코드를 jakarta.transaction.Transactional으로 사용 중이다가 변경하게 되었는데, 변경 코드는 아래와 같다.
@Transactional(propagation = Propagation.REQUIRES_NEW)