작성
·
48
·
수정됨
0
트렌젝션을 서비스 클래스에 걸면 이런 문제가 없을 거 같은데, 실무에서는 트렌젝션을 메서드 단위로 거나요??
저 같은 경우 서비스 클래스에 트랜젝션 readonly를 걸고
create, update, delete 등이 필요한 로직에 트렌젝션을 따로 거는 편입니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. gogoDevelop님!
트랜잭션을 어디에 적용할지에 대한 결정은 주로 적용하고자 하는 로직의 특성과 프로젝트의 요구 사항에 따라 달라질 수 있습니다.
일반적으로, 트랜잭션은 비즈니스 로직의 경계를 기준으로 설정하는 것이 좋습니다. 이는 비즈니스 로직이 완전하게 수행될 수 있도록 보장하며, 모든 데이터 변경이 일관성 있게 적용되도록 합니다. 실무에서는 보통 다음과 같은 방식으로 트랜잭션을 설정합니다.
트랜잭션을 서비스 계층에 적용: 서비스 계층은 비즈니스 로직을 구성하는 부분이기 때문에, 여기에 트랜잭션을 설정하는 것이 일반적입니다. 이를 통해 하나의 비즈니스 로직이 완전하게 처리되도록 보장할 수 있습니다.
메서드 단위 트랜잭션 설정: 경우에 따라 메서드 단위로 트랜잭션을 설정할 수도 있습니다. 이는 특정 작업이 독립적으로 처리되어야 하거나, 조정이 필요한 경우에 유용합니다.
관련 질문 및 답변을 찾기 위해 다음 링크들을 참조하실 수 있습니다:
- Service class의 transactional 메소드 문의
- Transaction 적용구간에 대한 질문
해당 링크들에서는 트랜잭션이 어떻게 적용되는지 서비스 메서드 관점에서의 설명과 예제가 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아 그럼 외부 API(OPEN API)에서 데이터를 가져오는 작업의 경우 트랜젝션 readonly가 아니라 아예 안거는 것도 하나의 방법이라는 말씀이신가요?