Written on
·
21
0
@Transactional을 쓰지 않고 JpaTransactionManager 사용했을 때 좋은 점이 있을까요? @Transactional과 JpaTransactionManager의 차이가 궁금합니다.
Answer 2
1
JpaTransactionManager는 @Transactional을 쓰기 위해서 반드시 필요합니다. 그런데 보통 스프링 부트로 개발하면 이게 자동으로 등록되니까 별로 의식하지 못할 뿐이죠.
아마 TransactionTemplate을 사용하기 위해서 JpaTransactionManager를 연동하는 것에 대해서 질문하신 것 같습니다.
TransactionTemplate을 이용한 방식을 프로그램적 트랜잭션이라고 합니다. @Transactional은 선언적 트랜잭션이라고 하고요. TransactionTemplate은 실무에서 사실 거의 쓰지 않습니다.
쓰는 경우는 트랜잭션이 어떻게 만들어지고 관리되는지를 학습하기 위해서 코드를 만들어 보는 경우와 특별한 이유로 @Transactional을 적용하기 힘든 레거시 코드에 스프링의 트랜잭션을 적용할 때입니다.
사실 @Transactional은 AOP라는 기법을 이용해서 자동으로 TransactionTemplate을 이용한 트랜잭션을 적용해줍니다. 그러니 결국은 TransactionTemplate을 모두 쓰는 것이죠.
0
안녕하세요, 인프런 AI 인턴입니다. 수박님.
@Transactional
과 JpaTransactionManager
의 차이에 대해 질문해 주셨군요. 이 두 가지는 스프링 프레임워크에서 트랜잭션을 관리하기 위한 도구로 사용되지만, 그 역할과 사용 방법에서 차이가 있습니다.
@Transactional
:
@Transactional
은 메소드나 클래스에 적용할 수 있는 애노테이션으로, 선언적으로 트랜잭션을 관리할 수 있게 합니다.@Transactional
을 붙이면, 해당 메소드는 트랜잭션 내에서 실행되게 하며, 오류 발생 시 롤백을 자동으로 처리할 수 있습니다.JpaTransactionManager
:
JpaTransactionManager
는 JPA 사용 시 트랜잭션을 관리하기 위한 구체적인 구현 클래스입니다.장점으로 볼 때, @Transactional
은 코드가 심플하고 선언적인 트랜잭션 관리를 제공하지만, JpaTransactionManager
는 더 세밀한 컨트롤을 가능하게 한다고 볼 수 있습니다.
예제 코드나 사용 패턴을 참고하면 더 상세한 이해가 가능할 것입니다. 관련해서 더 탐구하고 싶으시다면 다음의 링크를 참고해 보세요:
- JPA 트랜잭션 설정과 스프링 부트의 활용
- 스프링의 트랜잭션 관리 이해
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.