반응형
엔티티(Entity)
- 식별자를 갖는 객체
- 식별자 유형
- 특정 규칙에 따라 생성
- UUID 사용 (java.util.UUID)
- 값을 직접 입력
- 일련번호 사용(시퀀스나 DB의 자동 증가 컬럼 사용)\
// 엔티티 클래스
@Entity
@Table(name = "member")
public class Member() {
@Id
private int id; // 식별자
}
밸류(Value) 타입
- 개념적으로 완전한 하나를 표한할 때 사용한다.
- 예를들어 주소(zipcode, address, detailAddress), 받는 사람(name, phoneNumber) 등등
// 엔티티 클래스
@Entity
@Table(name = "member")
public class Member() {
@Id
private int id; // 식별자
private Address address; // 밸류
}
// 밸류 타입 클래스
public class Address {
private String zipcode;
private String basicAddress;
private String detailAddress;
}
엔티티와 밸류 매핑 기본 규칙
- 애그리거트 루트는 엔티티이므로 @Entity로 매핑 설정한다.
- 한 테이블에 엔티티와 밸류가 같이 있다면
- 밸류는 @Embeddable로 매핑 설정한다.
- 밸류 타입 프로퍼티는 @Embedded로 매핑 설정한다.
주의해야할 점
- 애그리거트에서 루트 엔티티를 제외하면 대부분 밸류이다.
- 단지 다른 테이블에 저장한다고 해서 엔티티인 것은 아니다.
- 애그리거트에 속한 객체가 밸류인지 엔티티인지 구분하는 방법은 고유 식별자를 갖는지 여부를 확인하는 것이다.
반응형
'DDD' 카테고리의 다른 글
AttributeConverter를 이용한 밸류 매핑 처리 (0) | 2021.09.14 |
---|---|
@SecondaryTable을 이용한 밸류 매핑 설정 (0) | 2021.09.14 |
BOUNDED CONTEXT 간 통합 (0) | 2021.09.14 |
BOUNDED CONTEXT 간 관계 (0) | 2021.09.14 |
좋은 의존성을 구성하라! (0) | 2021.09.14 |