객체지향

[DDD, 도메인 주도 개발] 5.스프링 데이터 JPA를 이용한 조회 기능

마디니 2023. 4. 9. 20:53
반응형

스펙(Specification)

 

CQRS

명령(Command)모델과 조회(Query)모델을 분리하는 패턴이다. 

명령모델은 상태를 변경 하는 기능을 구현할 때 사용하며 주로 도메인 모델이 이에 해된다.

조회모델은 상태를 조회 하는 기능을 구현 할 때 사용 한다.

 

검새조건이 단순하고 고정되어 있는경우

JPA 메소드 사용

findByEmailAddressAndLastname

findAllByDescriptionContaining

 

검색 조건을 다양하게 조합할 때 스펙을(specification) 사용한다.

/** 특정조건을 충족하는지 검사할 때 사용하는 인터페이스 */
public interface Specification<T> {
	public boolean isSatisfiedby(T agg);
}

 

[주문이 특정 고객의 주문인지 확인하는 스펙 구현]

public class OrdererSpec implements Specification<Order> {
	private String ordererId;

	public boolean isSatisfiedBy(Order agg) {
		return agg.getOrdererId().getMemberId().getId().equals(ordererId);
	}
}

 

[단점]

조합이 증가할수록 정의 해야하는 메소드가 증가한다.

 

 

 

반응형