트랙잭션 전파 구현에 대해서 문의 드립니다.
216
작성한 질문수 2
안녕하세요. 강의 항상 잘 보면서 많은 도움 받고 있습니다.
트랜잭션 전파 구현에 대해서 질문이 있어서 질문 드립니다.
트랜잭션 전파 활용 강의를 보면 예제로 MemberService에서 MemberRepository와 LogRepository에 각각 함수를 실행하고 MemberService, MemberRepository, LogRepository에 모두 @Transactional을 사용해서 하나의 물리 트랜잭션으로 묶어주고 만약 MemberRepository에서 에러가 발생하면 LogRepository도 rollback이 되지 않는거는 이해를 했습니다.
제가 프로젝트를 하면서 구현을 하다가 이 부분에 의문이 생겨서 문의 드립니다.
예를 들어서 제가 회원이 가입을 하면 가입 처리, 인사 메시지 발송, 포인트 지급에 대한 동작을 하려고 하는데 역할 분리를 위해서 각각 MemberService, MessageService, PointService에서 해당 동작을 처리하도록 만들었습니다.
#MemberController
@Transactional???
public MemberResponse register() {
memberService.store();
messageService.send();
pointService.store();
}
#MemberService
@Transational
public Member store() {
#가입처리
}
#MessageService
@Transactional
public void send() {
#메시지 발송
#발송
}
#PointService
@Transactional
public void store() {
#가입 포인트 지급
}위와 같은 방식으로 처리를 하려고 하고 하나의 과정에서라도 문제가 있다면 전부 rollback을 시키려고 합니다.
여기서 의문점은 MemberService, MessageService, PointService를 호출하는 Controller에서 Transactional을 선언하는게 맞는건가? 싶어서 문의 드립니다.
이 구조에서라면 Controller에 Transactional을 선언하는게 맞을 것 같은데 다른 예시나 인터넷에 찾아봐도 Controller에서 Transactional을 사용하는 예시를 찾지 못 했습니다.
아니면 어떤 방식으로 구현하면 좋을지 답변 부탁드립니다.
감사합니다!
답변 1
1
안녕하세요. max님
여러 기능을 중앙에서 모아서 처리하는 것을 보통 퍼사드라고 하는데요.
이러한 퍼사드 계층을 하나 만드시면 됩니다.
Controller -> 퍼사드(트랜잭션 시작) -> 서비스들
감사합니다.
설정 정보 없이 임베디드 데이터베이스 생성
0
17
1
RepositoryTest의 패키지 위치가 domain인 이유
0
38
2
REQUIRES_NEW 해결 방법에 대해서 질문있습니다!!
0
32
1
update()에 사용하는 setter 질문드립니다.
0
49
1
SQL 중심적 개발의 문제점에 대한 질문
0
79
1
혹시 Containing 을 안쓰신 이유가 있을까요?
0
89
2
[공유] 스프링부트 4.x 버전 mybatis 연동
0
184
1
@repository 어노테이션
0
94
3
ItemService
0
59
1
논리 커밋, 물리 커밋 질문드립니다.
0
54
1
내부 트랜잭션 커밋은 필수인가요?
0
57
1
프록시 커넥션 객체를 반환할 때 생성하는건가요?
0
55
1
Transaction readOnly 성능 개선 (김영한님의 대한 감사인사)
2
180
2
JPQL 대신 네이티브 쿼리를 사용해야 하는 경우
0
81
1
@EventListener(ApplicationReadyEvent.class) 관련
0
90
1
트랜잭션 동기화 매니저와 데이터 소스
0
77
1
DB 관련 강의 개설 계획은 없으신건가요?
0
133
2
물리 트랜잭션 과 논리트랜잭션 용어를 맞게 이해한걸까요
0
96
1
스프링 3 버전 이상 rollbackFor 변경된듯요
1
114
1
트랜잭션 전파 질문.
0
87
1
프로젝트 오픈 에러
0
126
1
외부 트랜잭션에서 isNewTransaction이 false로 나오는거에 대해 질문드립니다
0
84
2
같은 스레드를 사용하면 트랜잭션 동기화 매니저는 같은 커넥션을 반환
0
74
1
h2 인메모리 테스트중 예약어 충돌날 경우 대처방법
0
105
1





