JPA와 DDD를 함께 사용하면 처음에는 꽤 자연스럽게 느껴집니다. JPA는 객체를 기반으로 DB를 다룰 수 있게 해주고, DDD는 도메인 객체를 중심으로 비즈니스 규칙을 표현합니다.
둘 다 객체를 중심에 둔다는 점에서는 잘 맞아 보입니다. 하지만 실제로 구현하다 보면 여러 고민이 생깁니다.
JPA Entity와 Domain Entity는 같은 객체로 사용해도 되는가? Aggregate Root 중심으로 도메인 행위를 제한하려면 JPA 연관관계는 어떻게 잡아야 하는가?
OneToMany, ManyToOne 양방향 매핑은 DDD 관점에서 괜찮은가? orphanRemoval, 변경 감지, Lazy Loading은 도메인 모델에 어떤 영향을 주는가?
toString, equals, hashCode는 어떻게 다뤄야 하는가? 복잡한 도메인은 JPA Entity와 Domain Entity를 분리해야 하는가?
이 글에서는 JPA에서 DDD를 적용할 때 마주치는 현실적인 고민을 정리해 보았습니다....
원문 링크 : JPA에서 DDD를 적용할 때 마주치는 현실적인 고민