커멘드와 쿼리 분리에 대해
안녕하세요 항상 강의 잘 듣고 있습니다!
제가 이해력이 부족하여 모든 질문을 보았음에도 이해가 가지않아 질문 합니다! ㅜ
현재 강의의 예시에는
--------
orderV3 컨트롤러 -> 읽기전용 @Transactional이 설정된 OrderQueryService -> OrderRepository
이렇게 호출이 되어 있는데요
--------
이 예시는 핵심 비즈니스 로직 없이 OrderQueryService 즉 화면이나 API에 맞춘 서비스만 있는 예시인건가요 ?
아니면 Repository 호출을 OrderService가 있다고 치고
OrderQueryService안에 OrderService(핵심비즈니스로직)이 있고 그안에 OrderRepository를 호출 했다고 치는건가요 ?
--------
(예를들면 이렇게 )
orderV3 컨트롤러 -> OrderQueryService -> OrderService(생략) -> OrderRepository
--------
결론은 OrderService와 OrderQueryService가 같이 어떻게 쓰여지는지 이해가 가질 않습니다..
답변 1
0
안녕하세요. 이진현님, 공식 서포터즈 y2gcoder입니다.
먼저 질문에 대한 답변을 드리자면
orderV3 컨트롤러 > OrderQueryService > OrderRepository
> OrderService(Command) >
위와 같이 나눌 수 있을 것 같습니다. 좀 더 나아간다면 Repository도 Command용 Query용으로 나눌 수 있을 것 같습니다.
해당 내용에 대해 간단하게 말씀드리자면 화면에 호출하기 위한 조회 로직과, 나머지 생성, 수정, 삭제, 일반적인 조회 로직들을 분리 하는 패턴으로 CQRS 패턴이라고 합니다. 이해에 도움이 되실 만한 링크도 첨부하겠습니다!
https://docs.microsoft.com/ko-kr/azure/architecture/patterns/cqrs
감사합니다.
0
답변 정말 감사합니다!!
정리하면 해당 강의 예시에 CQRS패턴을 적용 한다고 쳤을때
OrderQueryService, OrderService(Command) 각각 @Transactional을 설정하여
각각 영속성 컨텍스트가 생성 되는게 올바른 이해일까요 ??
강의 관련 외 질문입니다.
0
85
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
1
102
1
BeanCreationException
0
99
3
Update 후 UpdateMemberResponse 매핑할 때
0
59
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
104
2
페이징 + 검색조건 관련해서 질문드립니다.
0
74
1
Query Dsl Q파일 질문입니다.
0
86
1
루트 쿼리라는것은
0
62
1
메서드를 분리하는 기준
0
72
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
116
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
92
2
fetch join과 영속화와 OSIV의 관계
0
92
2
Distinct 사용 전 결과에 대한 의문
0
121
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
63
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
79
2
dto 필드 속 엔티티 여부
0
64
1
뷰템플릿 사용 시
0
83
2
Result 클래스 관련 질문
0
58
1
@PostConstruct 프록시 관련 질문드립니다
0
88
1
DTO 대신 Form 사용은 안되나요?
0
140
1
OSIV ON 상태일 때
0
100
1
fetch join VS fetch join 페이징 궁금증
0
191
2
양방향 연관관계 알아보는 법?
0
110
1
16강 17강 간단 정리 이게 맞을까요 ?
0
169
2





