[DDD] 스프링 데이터 JPA를 이용한 조회 기능 -3
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.183~198)를 읽고 정리한 글입니다. 스펙 조합스펙 인터페이스는 기본 구현을 제공하는 default 메서드인 and()와 or()를 통해 스펙을 조합할 수 있다. // 스펙 조건마다 개별 변수 선언Specification spec1 = OrderSummarySpecs.ordererId("user1");Specification spec2 = OrderSummarySpecs.orderDateBetween( LocalDateTime.of(2022, 1, 1, 0, 0, 0), LocalDateTime.of(2022, 1, 2, 0, 0, 0)); Specification spec3 = spec1.and(spec2); ..
[DDD] 스프링 데이터 JPA를 이용한 조회 기능 -2
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.178~182)를 읽고 정리한 글입니다. 스프링 데이터 JPA를 이용한 스펙 구현Spring Data JPA는 검색 조건을 표현하기 위한 인터페이스인 Specification을 제공하며 다음과 같이 정의되어 있다.public interface Specification extends Serializable { @Nullable Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb);} 스펙 인터페이스에서 제네릭 타입 파라미터 는 JPA 엔티티 타입을 의미한다. toPredicat..
[DDD] 리포지터리와 모델 구현 -8 / 스프링 데이터 JPA를 이용한 조회 기능 - 1
·
📚 개발자의 서재/도메인 주도 개발 시작하기
해당 포스팅은 최범균 작가님의 도메인 주도 개발 시작하기 (P.170~177)를 읽고 정리한 글입니다. 도메인 구현과 DIP아래 리포지토리는 DIP 원칙을 어기고 있다. 먼저 엔티티는 구현 기술인 JPA에 특화된 @Entity, @Table, @Id, Column 등의 애너테이션을 사용하고 있다. DIP에 따르면 @Entity, @Table은 구현 기술에 속하므로 Article과 같은 도메인 모델은 구현 기술인 JPA에 의존하면 안 된다.@Entity@Table(name = "article")@SecondaryTable( name = "article_content", pkJoinColumns = @PrimaryKeyJoinColumn(name = "id"))public class Article{ ..