사양 패턴 대 특정 최대 절전 모드 쿼리
-
19-09-2019 - |
문제
내 질문은 사양 패턴을 사용하는시기와 특정 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 ^^?)
제휴하지 않습니다 StackOverflow