서비스에 @Transactional 애노테이션을 사용하시지 않는 이유가 궁금합니다
안녕하세요 궁금한게 있어 질문 남깁니다.
보통 데이터베이스 사용시 서비스 단에 @Transactional을 관습적으로 붙여왔는데, 서비스 로직을 작성하실때 @Transactional 애노테이션을 사용하시지 않은 건 비즈니스 로직이 너무 간단하기 때문에(트랜잭션 논리 단위로 묶을 필요없을 정도로) 생략하신거라고 이해하면 될까요?
답변 감사합니다
Answer 2
1
안녕하세요 진우님~
데이터베이스에 접근하더라도 읽기작업만 일어나는경우에는 readOnly true 옵션으로 작업의 명확성과 최적화를 위해 애노테이션을 달아주시는게 좋겠습니다. (서비스레이어라고 하더라도 데이터베이스에 접근하지 않는경우에는 붙일 필요가 없겠구요) 조회담당 서비스에 빠져있다면 추가하셔서 진행부탁드리겠습니다 🙏
0
BookApplicationService에 @Transactional을 달아야 하나요?
그 하위 DailyStatCommandService 같은곳에 트랜잭션을 달아야 하나요 ??
0
안녕하세요, 인프런 AI 인턴입니다. 이진우님,
@Transaction 애노테이션의 사용 여부에 관한 질문을 주셨군요.
서비스 단에서 @Transactional 애노테이션을 사용하지 않은 이유로 비즈니스 로직의 복잡성과 관련이 있을 수 있습니다. 데이터베이스 작업에서 하나 이상의 단위를 트랜잭션으로 묶어야 할 경우 @Transactional을 주로 활용합니다. 트랜잭션은 모든 작업의 성공 또는 실패 여부에 따라 데이터를 일관되게 유지하는 데 도움이 됩니다.
그러나 매우 간단한 비즈니스 로직에서는 트랜잭션을 이용한 복잡한 처리가 필요하지 않기 때문에 생략될 수 있습니다. 이런 경우, 데이터의 일관성을 유지할 필요가 없고 데이터 무결성 문제가 발생할 가능성이 적기 때문이죠.
추가적으로 더 많은 정보가 필요하시다면, 아래 관련 질문들을 확인해 보시는 것도 좋습니다:
- 멀티모듈 구성에서 하위 모듈은 java 모듈로 하는 이유가 궁금합니다. - 모듈 간의 의존성 및 프로젝트 구조 관련 설명.
- 비즈니스 로직 담당 서비스 - 비즈니스 로직 분리와 CQRS 패턴에 대한 설명.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
NaverBookRepository.class 의 위치에 따른 모듈간의 의존성에 대해 질문드립니다.
1
32
2
패키지 vs 모듈 선택 기준
0
51
2
Kotlin 테스트 프레임워크
0
82
2
import 오류?
0
71
2
JSON 역직렬화
0
66
2
Spring Cloud 버전 관리 문제
0
271
2
AsyncExcutor 설정값 질문
0
82
2
17강 api서버구현2 질문있습니다.(ai답변이 이상합니다.)
0
117
2
16강 api서버구현 질문있습니다.
0
77
2
14번쨰 부분 중 질문드립니다..<ai답변으로 해도 안되요>
0
144
2
.
0
144
1
NaverClientTest 질문있습니다.
0
179
2
멀티모듈 구성 질문입니다.
0
209
3
멀티모듈 구성 강의에 대해 질문이 있습니다.
0
214
3
SPOCK 의존성 추가 후 Generate Test 옵션 미노출
0
202
3
멀티모듈 지식 습득에 관하여 질문 드립니다.
0
250
2
Async Config 테스트컨트롤러의 코드의 동작이 안되는거 같습니다.
0
223
3
author 배열이 비어서 오는 경우가 있으니 참고하세요.
0
190
3
커밋 끊으면서 해주시는거 너무 좋네요.
1
160
2
비즈니스 로직 담당 서비스
0
198
2
모의과제 소개
0
179
2
cqrs에 관하여
1
256
2
멀티모듈 문의드립니다.
0
264
2
클린한 아키텍쳐에 관하여
1
234
2

