커멘드와 쿼리 분리에 대해
안녕하세요 항상 강의 잘 듣고 있습니다!
제가 이해력이 부족하여 모든 질문을 보았음에도 이해가 가지않아 질문 합니다! ㅜ
현재 강의의 예시에는
--------
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을 설정하여
각각 영속성 컨텍스트가 생성 되는게 올바른 이해일까요 ??
SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류
0
36
1
@JsonIgnore 이후 Internal Server Error가 발생하지 않습니다.
0
62
3
강의 관련 외 질문입니다.
0
101
2
SpringBoot4 + Hibernate7 모듈 등록 방법 공유
2
119
1
BeanCreationException
0
106
3
Update 후 UpdateMemberResponse 매핑할 때
0
69
1
트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?
0
120
2
페이징 + 검색조건 관련해서 질문드립니다.
0
89
1
Query Dsl Q파일 질문입니다.
0
101
1
루트 쿼리라는것은
0
75
1
메서드를 분리하는 기준
0
87
1
findAllWithMemberDelivery 메서드 질문드립니다.
0
139
3
연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략
0
114
2
fetch join과 영속화와 OSIV의 관계
0
114
2
Distinct 사용 전 결과에 대한 의문
0
132
2
레포지토리 계층에서의 트랜잭션에 대한 의문
0
71
1
영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.
0
94
2
dto 필드 속 엔티티 여부
0
79
1
뷰템플릿 사용 시
0
92
2
Result 클래스 관련 질문
0
66
1
@PostConstruct 프록시 관련 질문드립니다
0
96
1
DTO 대신 Form 사용은 안되나요?
0
147
1
OSIV ON 상태일 때
1
108
1
fetch join VS fetch join 페이징 궁금증
0
207
2





