티스토리 뷰

Programing/TIL

20190609

oh-yes 2019. 6. 10. 08:24
20190610

DDD Start 3,4장 학습

1~2장을 통하여 DDD와 관련된 주요 개념과 키워드들을 살펴보았고, 3장부터는 도메인의 영역을 큰 그림을 통하여 세부 그림을 이해하는 법부터 시작하여 애그리거트를 구성하는 방법과 주의해야 할 부분이 대하여 조금 더 깊게 볼 수 있어서 좋았다. 4장에서는 실제 JPA를 이용하여 엔티티 매핑과 벨류 매핑을 직접 실습 해볼 수 있었는데, 자바로 되어 있는 매핑 코드를 코틀린 베이스로 옮겨서 작성해야 하니 생각보다 걸리는 지점이 있어서 조금 시간을 소모 할수 밖에 없었다. JPA를 공부하고 바로 이 책을 봤었더라면 좀 더 업무 코드에서도 의미 있는 엔티티 구성과 로직을 만들어 낼 수 있었겠다는 아쉬움도 들긴 하지만, 지금이라도 모자란 부분이 무엇인지 확인해볼 수 있는 좋은 기회인거 같아 나름 수확이 있다고 할 수 있다.

  • 3장
    • 트랜잭션 범위 지정: 애그리거트 단위로 지정
    • 레파지토리/애그리거트
      • 레파지토리는 애그리거트 단위로 작성
      • 레파지토리의 인터페이스는 도메인 레이어에 그리고 이를 구현하는 클래스는 인프라스트럭처 레이어로 배치
    • 애그리거트 간 연관 관계 참조 전략
      • 필드 매핑의 경우, 경계가 애매해질 수 있음
      • ID값을 매핑하는 전략을 사용할 경우 조금 더 명료해짐
    • 애매한 경계에서의 요구사항일 경우, 별도의 조회 도메인을 작성하는 것도 좋다.
  • 4장
    • 루트 엔티티(애그리거트 루트) 매핑
    • 레파지토리의 주요 역할
    • 다양한 매핑 방법
      • ID값 매핑(@EmbeddedId)
      • 컬렉션 데이터 매핑(컬럼, 테이블)
      • @Convert, AttributeConvert를 활용한 데이터 컨버터 생성 및 적용
    • 벨류 객체에 대한 매핑 전략
      • 같은 라이프사이클 내에 존재하는 연관 객체라면 벨류 객체 매핑을 통하여 충분히 해결이 가능하다.
      • @Embeddable, @Embedded을 사용한 불변 객체 활용 및 @AttributeOverrides, @AttributeOverride를 활용한 컬럼 데이터 재지정 및 매핑
      • 도메인 상황에 따른 엔티티 객체로 매핑
        • 연관 객체라고 하여 모든 것을 엔티티로 매핑 할 이유는 없다. 객체의 라이프사이클이 엔티티로 지정 해야 할 라이프사이클인지 그리고 확실하게 애그리거트내에 존재해야 하는지 도메인 상황에 맞는 정확한 판단을 해야 한다.
      • @ElementCollection, @CollectionTable을 별도 테이블 벨류 매핑
    • 로딩 전략(Eager/Lazy)
      • N+1
      • Eager와 Lazy를 사용해야 할 시점에 대한 고민
      • Lazy 사용 시, 트랜잭션 범위 내에서 사용
    • 영속성 전파/식별자 생성 전략
      • Cascade, orphanRemoval

'Programing > TIL' 카테고리의 다른 글

20190714  (0) 2019.07.14
20190622  (0) 2019.07.14
20190603  (0) 2019.06.03
20190528  (0) 2019.05.28
20190526  (0) 2019.05.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함