1) 애그리거트의 영속성 전파란?
- 애그리거트가 완전한 상태여야 한다는 것은
애그리거트 루트를 조회할 때뿐만 아니라
저장하고 삭제할 때도 하나로 처리해야 함을 의미한다.
(1) 저장 메서드는 애그리거트 루트만 저장하면 안 되고 애그리거트에 속한 모든 객체를 저장해야 한다
(2) 삭제 메서드는 애그리거트 루트뿐만 아니라 애그리거트에 속한 모든 객체를 삭제해야 한다.
- @Embeddable 매핑 타입은 함께 저장되고 삭제되므로, cascade 속성을 추가로 설정하지 않아도 된다.
반면에 애그리거트에 속한 @Entity 타입에 대한 매핑은 cascade 속성을 사용해서
저장과 삭제 시에 함께 처리되도록 설정해야 한다.
- @OneToOne, @OneToMany는 cascade 속성의 기본값이 없으므로,
다음 코드처럼 cascade 속성값으로 CascadeType.PERSIST, CascadeType.REMOVE를 설정한다.
@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REMOVE}, orphanRemoval = true)
@JoinColumn(name = "product_id")
@OrderColumn(name = "list_idx")
private List<Image> images = new ArrayList<>();
'도메인 주도 개발 시작하기' 카테고리의 다른 글
[도메인 주도 개발 시작하기] 애그리거트 루트 (0) | 2025.01.14 |
---|---|
[도메인 주도 개발 시작하기] 인프라스트럭쳐 개요 (0) | 2025.01.14 |
[도메인 주도 개발 시작하기] 애그리거트 로딩 전략 (0) | 2025.01.14 |
[도메인 주도 개발 시작하기] 바운디드 컨텍스트 (0) | 2025.01.14 |
[도메인 주도 개발 시작하기] 애그리거트 (0) | 2025.01.07 |