• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

Aggreagte 에 두개 이상의 Entity로 구성할 수 있나요?

23.09.11 04:33 작성 조회수 300

0

논리적인 개념인지 물리적인 개념인지 둘 다 포함하는 영역인지

궁금합니다.

Order와 OrderHistory 테이블과 Entity(JPA) 는 분리 되어 있고 같은 트랜잭션에서 처리 한다는 가정하에 (저는 History 성 테이블을 같은 트랜잭션안에 두지 않는 것을 선호합니다) 두개를 동일한 Aggregate 라고 할 수 있나요?

 

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

답변 1

답변을 작성해보세요.

1

Aggregate는 데이터 변경을 위한 단일 단위로 처리되는 도메인 모델 묶음입니다.

Aggregate는 하나 이상의 엔터티와 Aggregate의 진입점 역할을 하는 루트 엔터티로 구성됩니다. 루트 엔터티는 전체 Aggregate의 일관성과 무결성을 보장하는 일을 담당하고요. 그리고 Aggregate 내의 엔터티는 서로 관련되어 있으며 특정 불변성 및 비즈니스 규칙을 시행하는 방식으로 설계되어야 합니다. 또한 긴밀하게 응집되어 있어야 하며 동일한 수명 주기를 공유해야 합니다.

따라서 답변을 드리자면 예, Aggregate는 두 개 이상의 엔터티로 구성될 수 있다고 생각합니다. 물론 실제로 모델링을 하다 보면 엔티티 1개와 여러개의 vo로 모델링 되는 경우가 많습니다. 그렇지만 여러 엔티티가 하나의 애그리거트에 존재한다고 해서 실제로 이러한 덩어리가 비지니스 개념을 응집력 있게 표현하고 생명주기를 공유할 수 있다면 큰 무리는 없다고 생각합니다.

언급하신 경우는 order Aggregate에 두개의 엔티티 Order, OrderHistory가 존재하는 경우라고 생각되네요.

사실 기대하지 않았는데 …  좋은 답변 주셔서 진심을 담아 감사합니다. 

실무하면서 이런 방향이 맞지 않나 가장 정답에 근접한 방향으로 개발을 하면서도 이게 맞는 방향일까 항상 고민이 많은데요

 

동료분이 Aggregate를 언급하길래 뭔가 싶어서 강의를 들게 되었습니다. 덕분에 Aggregate 개념이 무엇인지 명확하게 알게 되었습니다.

설계에 대해 좀 더 크게 경계를 넓혀 생각하는 기회도 되었습니다.