문제

내 질문은 사양 패턴을 사용하는시기와 특정 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 / Hibernate에서도 동일합니다

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

나는 그것이 처리 할 데이터 볼륨에 달려 있다고 생각합니다.

도움이 되었습니까?

해결책

그만큼 저장소 도메인 클래스에서 지속성 구현을 추상화하는 데 사용됩니다. 요컨대, SQL/HQL은 리포지토리 내에 만 존재해야합니다.

높은 데이터 볼륨을 다루고 있다면 새로운 메소드를 작성하십시오. 저장소 그리고 당신의 방법을 호출하십시오 사양.

다른 팁

SQL 버전은 테이블이 해당 열 및 크기에 대해 적절하게 인덱스되면 빠르게 실행되며 DB 서버와 앱 서버가 다른 경우 더 작은 양의 데이터를 전송합니다. 그러나 CPU 및 디스크 I/O 사용 측면에서 SQL 박스에 더 높은 부하를 부과 할 수 있으며, 많은 환경에서 DB 서버가 가장 비싼 구성 요소입니다.

그렇습니다. 데이터 규모에 따라 크게 달라집니다.

HQL 쿼리를 생성하기 위해 최대 절전 모드에 따라 사양 패턴을 결합하는 것이 좋습니다. (아마도 java의 linq ^^?)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top