전체 글 (748) 썸네일형 리스트형 [도메인 주도 개발 시작하기] 애그리거트 루트 1) 애그리거트 루트란?- 주문 애그리거트는 다음을 포함한다. (1) 총 금액인 totalAmounts를 갖고 있는 Order 엔티티(2) 개별 구매 상품의 개수인 quantity와 금액인 price를 갖고 있는 OrderLine 밸류 - 구매할 상품의 개수를 변경하면 한 OrderLine의 quantity를 변경하고 더불 Order의 totalAmounts도 변경해야 한다. 그렇지 않으면 다음 도메인의 규칙을 어기고 데이터 일관성이 깨진다주문 총 금액은 개별 상품의 주문 개수 x 가격의 합이다. - 애그리거트는 여러 객체로 구성되기 때문에 한 객체만 상태가 정상이면 안된다. 도메인 규칙을 지키려면 애그리거트에 속한 모든 객체가 정상 상태를 가져야 한다. 주문 애그리거트에서는 OrderLine을 .. [도메인 주도 개발 시작하기] 인프라스트럭쳐 개요 1) 인프라스트럭쳐란?- 인프라스트럭쳐(Infrastructure)는 표현 영역, 응용 영역, 도메인 영역을 지원한다. 도메인 객체의 영속성 처리, 트랜잭션, SMTP 클라이언트, REST 클라이언트 등 다른 영역에서 필요로 하는 프레임워크, 구현 기술, 보조 기능을 지원한다. - DIP에서 언급한 것처럼 도메인 영역과 응용 영역에서 인프라스트럭처의 기능을 직접 사용하는 것보다 이 두 영역에 정의한 인터페이스를 인프라스트럭처 영역에서 구현하는 것이 시스템을 더 유연하고 테스트하기 쉽게 만들어준다. - 하지만 무조건 인프라스트럭처에 대한 의존을 없앨 필요는 없다. 예를 들어, 스프링을 사용할 경우 응용 서비스는 트랜잭션 처리를 위해 스프링이 제공하는 @Transactional을 사용하는 것이 .. [도메인 주도 개발 시작하기] 애그리거트의 영속성 전파 1) 애그리거트의 영속성 전파란?- 애그리거트가 완전한 상태여야 한다는 것은 애그리거트 루트를 조회할 때뿐만 아니라 저장하고 삭제할 때도 하나로 처리해야 함을 의미한다. (1) 저장 메서드는 애그리거트 루트만 저장하면 안 되고 애그리거트에 속한 모든 객체를 저장해야 한다(2) 삭제 메서드는 애그리거트 루트뿐만 아니라 애그리거트에 속한 모든 객체를 삭제해야 한다. - @Embeddable 매핑 타입은 함께 저장되고 삭제되므로, cascade 속성을 추가로 설정하지 않아도 된다. 반면에 애그리거트에 속한 @Entity 타입에 대한 매핑은 cascade 속성을 사용해서 저장과 삭제 시에 함께 처리되도록 설정해야 한다. - @OneToOne, @OneToMany는 cascade 속성의 기본값.. 이전 1 2 3 4 5 6 7 ··· 250 다음