[DDD START!] CHAPTER 4. 리포지터리와 모델 구현(JPA 중심)
내용 요약
- 가능하면 리포지터리 구현 클래스를 인프라스트럭처 영역에 위치시켜서 인프라스트럭처에 대한 의존을 낮춰야함
- 리포지터리의 기본 기능
- 아이디로 애그리거트 조회하기
- findBy~ 메소드
- 애그리거트 저장하기
- save 메소드
- 아이디로 애그리거트 조회하기
- 리포지터리 인터페이스는 애그리거트 루트를 기준으로 작성함
- 매핑 구현
@Entity
: 애그리거트 루트 클래스@Embeddable
: 밸류 클래스@Embedded
: 밸류 타입 프로퍼티
- 코드 예시는 책 참조
@AttributeOverrides
:@Embeddable
에 설정한 컬럼 이름과 실제 컬럼 이름이 다른 경우 매핑할 컬럼 이름을 변경할 때 사용- JPA 2부터
@Embeddable
은 중첩을 허용: 밸류 클래스가 또 다른 밸류 클래스를 포함할 수 있음 - 기본 생성자: JPA로 클래스를 매핑하려면 기본 생성자를 제공해야 함
protected
로 선언하자. 프록시 클래스에서 상위 클래스의 기본 생성자를 호출할 수 있어야하기 때문
- 매핑 방법: 필드 방식 vs 프로퍼티 방식 (메소드 방식)
- 프로퍼티 방식은 불필요한 public set, get 메소드를 추가하게되므로 바람직하지 않음
- 필드 방식을 사용하는 것이 바람직함 (
@Access(AccessType.FIELD)
)
댓글남기기