[DDD START!] CHAPTER 4. 리포지터리와 모델 구현(JPA 중심)

최대 1 분 소요

내용 요약

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

태그:

카테고리:

업데이트:

댓글남기기