decorus-kazuma / blog.decorus.io

💁‍♂️ decorus-kazuma blog.
https://blog.decorus.io
MIT License
0 stars 0 forks source link

engineering/domain%20driven%20design/2022/05/06/design-and-management-of-aggregate-root-ddd #9

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

도메인 주도 설계의 Aggregate Root를 설계하고 유지하는 법

Aggregate Root가 비대해지고, 많은 책임을 지닐 때 이를 해결하는 방법에 대해 알아봅니다.

https://blog.decorus.io/engineering/domain%20driven%20design/2022/05/06/design-and-management-of-aggregate-root-ddd.html

samkimpepper commented 1 year ago

프로젝트 리팩토링을 어떻게 할 지 고민이 많았는데 정말 많은 도움이 되었습니다 넘 좋은 글이에요 잘 보고 갑니다

JungKyuHyun commented 1 year ago

결국은 작게 쪼개야 한다

항상 생각하게 되는 문장이네요 감사합니다

decorus-kazuma commented 11 months ago

글까지 나눠 쓰기는 조금 그래서, 첨언하자면 전 마지막 방법이 가장 좋다고 생각합니다. 작게 쪼개는 것은 아마 상상하는 것 이상의 복잡도를 야기시킬 것입니다. 책임의 대상이 테이블이나 다른 요소가 아닌 Aggregate Root, 즉 객체에게 있다면 명시적으로 나눠진 객체는 스스로 역할에 대한 표현을 다 할 수 있다고 봅니다.

@Entity
@DiscriminatorValue("0")
public class AdminManagedUser extends User {
}

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorFormula("0")
@Entity
@Table
public class User extends AbstractAggregateRoot<User> {
}

이렇게, 같은 테이블과 객체를 공유해서 상속을 구현할 수 있으니 참고하셨으면 합니다.