0

제 질문은 사양 패턴을 사용하고 특정 SQL 쿼리를 사용해야하는 경우입니다.사양 패턴 대 특정 최대 절전 모드 쿼리

특정 패턴은 구체적인 사양을 사용하여 전체 수집 및 사후 필터를 수집해야한다는 것을 이해했습니다. 하지만 난 특정 SQL 쿼리 앞에 이점을 이해하지 못한다.

CarColorSpecification cc = new CarColorSpecification(RED); 
CarAgeSpecification ca = new CarAgeSpecification(OLDER, 5); 

ISpecification finalSpec = cc.And(ca); 

List<Car> res; 
List<Car> carColl = service.getCars(); 
foreach(Car c in carColl) { 
    if(finalSpec.isSatisfiedBy(c)) { 
    res.add(c); 
    } 
} 

그리고 SQL에서 같은/

FROM Car c WHERE c.color = RED AND c.age > 5 

최대 절전 나는 그것을 처리하는 데이터 볼륨의 따라 생각합니다.

답변

0

저장소은 도메인 클래스에서 퍼시스턴스 구현을 추상화하는 데 사용됩니다. 즉, SQL/HQL은 리포지토리 내에 존재해야합니다. 당신은 높은 데이터 볼륨을 처리하는 경우

, 당신의 저장소에 새로운 방법을 만들고 사양에서 해당 메서드를 호출합니다.

1

테이블은 해당 열과 해당 크기에 대해 적절하게 색인화되고 DB 서버와 응용 프로그램 서버가 다른 경우 더 작은 양의 데이터를 전송합니다. 그러나 CPU 및 디스크 I/O 사용 측면에서 SQL 상자에 더 많은 부하를 부과 할 수 있으며 많은 환경에서 DB 서버는 가장 비싼 구성 요소입니다.

그렇습니다. 데이터의 크기에 크게 좌우됩니다.

0

나는 HQL 쿼리를 생성하기 위해 hibernate에 따라 명세 패턴을 결합하는 것이 좋은 타협이라고 생각한다. (아마도 Linq for Java ^^?)

+0

아마도 ViewModel과 같은 조명 필터링 프로세스에서 사양을 사용하고있을 수 있습니다. – Zenithar