도메인설계 관련 질문드립니다 !!
1697
投稿した質問数 24
1) 애그리거트를 나누실때 어떤 기준으로 나누시는지 궁금합니다 !!
ex) 아이템,주문, 회원, 결제 이런식으로 도메인을 나누는 기준 더 나아가서 아이템에 대한 리뷰, 결제기록, 서비스쿠폰과 같이 애매한 도메인이 추가된다면 어떤식으로 나누어야할지 너무 헷갈립니다 ㅠㅠ
2) 애그리거트 루트를 참조할때는 객체를 통해 접근하면 각 애그리거트간의 결합도가 상승할거같은데 어떤식으로 처리하시나요 ??
ex) 아이템과 주문이 아예 다른패키지이거나 다른프로젝트 일경우 어떤식으로 해야하나요 ??
回答 3
16
안녕하세요. 윤성님
1) 애그리거트를 나누실때 어떤 기준으로 나누시는지 궁금합니다 !!
-> 우선 애그리거트는 우리가 생각하는 것 보다 훨씬 작은 단위로 만들어집니다. 애그리거트는 상황마다 다르기는 하지만, 엔티티 하나가 거의 하나의 애그리거트로 만들어집니다. 이정도로 작은 단위로 만들어야합니다.
아이템, 주문, 회원, 결제 이런식으로 도메인을 나누면 이것은 애그리거트보다 상위 개념인 BoundedContext 개념으로 나누어야 합니다.
2) 애그리거트 루트를 참조할때는 객체를 통해 접근하면 각 애그리거트간의 결합도가 상승할거같은데 어떤식으로 처리하시나요 ??
-> DDD에서는 주로 이런 경우 연관관계를 맺지 말고, 식별자로 분리하라고 설명합니다. 이렇게 하면 다른 프로젝트여도 해당 식별자(String id, Long Id 등등)만 가지고 있으면 되기 때문에, 문제가 없습니다.
그런데, 이 모든 것은 프로젝트의 규모에 따른 선택이 필요합니다. 애그러거트 개념을 통해서 애그리거트 단위로 트랜잭션을 만들고 전파하고, 이런 부분은 다른 방면의 복잡성을 매우 높입니다.
추가로 연관관계를 매핑할 때 참조값 대신에 식별자를 사용하는 방법 등은, 모두 좋아보이지만, 실무에서는 이렇게 하면 fetch join을 통한 성능 최적화가 어렵습니다.
DDD를 적용할 때는 모든 것을 적용한다기 보다는, DDD를 재대로 공부하고, 필요한 부분을 우리 프로젝트에 맞게 선택해서 가져오는 것이 맞는 방향이라 생각합니다.
JPA나 ORM을 처음 사용할 때는, 단순히 애그리거트 개념도 빼고, 도메인 이벤트 개념도 빼고, 연관관계는 모두 설정하는 방향으로 기본을 가져가는 것을 저는 권장합니다.
이후에 프로젝트가 커지면 점진적으로 이러한 개념을 도입하고 적용하는게 저는 더 맞다고 생각합니다^^
감사합니다.
0
영한님 답변을 보고 한가지 궁금한 점이 있습니다.
애그리거트내에 여러 엔티티와 여러 값 객체로 이루어질 수 있으나, 애그리거트는 작은 단위로 만드는게 좋아서,하나의 애그리거트에 여러 엔티티보다 하나의 엔티티로 만드는 것을 추천하시나요?
2
애그리거트라는 것이 생각보다 작은 단위로 나오는 것이 맞다 생각합니다. 항상 그런 것은 아니지만 거의 하나의 엔티티가 하나의 애그리거트 단위가 되는 것으로 생각해주시면 됩니다.
물론 설계와 관련된 부분이라 상황마다 다르겠지만요 :)
0
jpa 공부하면서 ddd도 같이 공부하면 좋다고 하셨는데, 엔티티, 값객체, 애그이게이트 외에 jpa하기에 추가적으로 공부하면 좋울 것 같은 개념이 있을까요?
sdk 설정 오류
0
49
2
오탈자 - @Transactional
0
55
1
src/test/resources 테스트 경로 문제
0
50
1
상품 등록후 H2 db 출력 순서 바꿀 수 있나요?
0
63
1
MemberRepositoryTest 실행오류
0
81
1
boot 4.x >>> trasasction rolled back log & p6spy(영한님, 수업 자료 업데이트 해주시면 감사하겠습니다!!)
1
183
2
강의 마지막 QueryDSL 사용 부분 질문있습니다
1
137
2
클라이언트에서 isbn과 author 수정 요청을 한 경우에 대해 질문드립니다.
0
51
1
도메인 모델 패턴 vs 트랜잭션 스크립트 패턴
0
71
1
기본 생성자
0
60
1
h2 DB 연결시 jdbc url 변경 이유가 궁금합니다.
0
100
1
멤버서비스테스트 부분에서 막힙니다.
0
164
4
실무에서도 EntityManager를 이용해서 많이 작업하는 편일까요?
0
116
1
초반에 h2 다운로드 과정 꼭 필요한가요?
0
118
2
자신 필드에도 get으로 접근하는 이유가 있을까요?
0
112
1
24분 27초 연관관계 편의 메서드 위치
0
113
1
단건 주문만 가능하게 한건 의도한 부분이신가요?
0
108
2
빌드 툴, Gradle
0
59
1
h2연결은 된 것 같은데 엔티티 테이블까지 작성 후 확인해보아도 테이블이 안보입니다
0
76
2
Repository에서 EntityManager 주입 방식 차이
0
88
1
롬복과 사용자 정의 setter 메서드
0
71
1
주문 목록 조회 fetch join 질문드립니다
0
81
1
dirty checking 질문드립니다.
0
81
1
동시성 관련 질문입니다
0
74
1

