본문 바로가기

(19)
5장. 리포지터리의 조회 기능(JPA 중심) - 스펙 - JPA 스펙 구현 - 정렬과 페이징 - 동적 인스턴스와 @Subselect 검색을 위한 스펙 스펙(Specification)은 애그리거트가 특정 조건을 충족하는지 여부를 검사한다. public interface Speficiation { public boolean isSatisfiedBy(T agg); } agg -> 검사 대상이 되는 애그리거트 객체 isSatisfiedBy() 메서드는 검사 대상 객체가 조건을 충족하면 true, 아니면 false 리턴 스펙조합 스펙의 장점은 조합에 있다. 두 스펙을 AND 연산자나 OR 연산자로 조합해서 새로운 스펙을 만들 수 있고, 조합한 스펙을 다시 조합해서 더 복잡한 스펙을 만들 수 있다. JPA를 위한 스펙 구현 앞서 예로 보여준 리포티저리 코드는..
[DDD START!] 4장. 리포지터리와 모델구현(JPA 중심) - JPA를 이용한 리포지터리 기능 구현 - 엔티티와 밸류 매핑 - 밸류 컬렉션 매핑 - 애그리거트 로딩 전략과 영속성 전파 - 식별자 생성 기능 모듈위치 리포지터리 인터페이스 -> 애그리거트와 같은 도메인 영역 리포지터리 구현 클래스 -> 인프라스트럭처 영역 리포지터리 기본 기능 구현 1. 아이디로 애그리거트 조회하기 2. 애그리거트 저장하기 인터페이스는 애그리거트 루트를 기준으로 작성 -> 주문 애그리거트는 Order(루트 엔티티), OrderLine, Orderer, ShippingInfo 등이 있지만, Order를 기준으로 작성. 기본생성자 엔티티와 밸류의 생성자는 객체를 생성할 때 필요한 것을 전달받는다. Receiver (밸류)가 불변 타입이면 생성 시점에서 필요한 값을 모두 전달 받으므로 값..
[켄트 벡의 구현 패턴] 4장 동기유발, 5장 클래스, 6장 상태 4. 동기유발 소프트웨어 전체 비용 = 개발 비용 + 유지비용 유지 비용 = 이해 비용 + 수정 비용 + 테스트 비용 + 설치비용 초기 코드 개발에 대한 투자를 크게 확대 하는 것은 비효율적 1. 화폐 가치는 시일이 지나면 떨어지므로, 비용 발생 시점을 뒤로 미루는 것이 좋음. 2. 불확실성 측면에서 볼 때, 이후 이득을 가져올지도 모르는 구현 구현 패턴은 미래 코드 확장이나 수정이 쉬운 깔끔한 코드를 추구하면서도, 당장 얻을 수 있는 이득에 초점. 저자가 사용하는 비용 절감 : 모든 프로그래머가 커뮤니케이션하기 쉬운 코드를 짬으로써, 유지 비용을 줄이는 것. 이 경우 깔끔한 코드를 통해 코드의 결함이 줄어들고 코드 공유가 쉬워져서 좀더 원활한 개발이 가능. 5...