최대 절전 모드 3.3 나는 동적으로Hibernate - HQL 쿼리의 결과 SQL은 최대 절전 모드 시스템에 의해 캐시됩니까?
String query = "from Foo where ";
if(beforeDate != null) then query+=" createdBefore < :before";
session.createQuery(query);
같은 HQL 쿼리를 최대 절전 모드로 생성되는 코드를 가지고 있다면
SessionManager에 의해 캐시 얻을 DB에서 실행 얻을 것이다 결과 SQL을합니까 그래서 같은 경우 쿼리가 계속 실행될 때마다 매번 다시 컴파일 할 필요가 없으며 매번 최대 절전 모드로 다시 구문 분석되고 다시 작성됩니까?
필자는 dbcode의 성능을 향상시키기 위해 하이버 네이트에 정적 명명 된 쿼리를 써야 파싱 오버 헤드를 줄일 수 있다고 생각합니다.
매번 SQL이 생성됩니다. 동일한 세션에서 쿼리가 두 번째로 구문 분석되지 않습니다 (createQuery (query)와 동일한 결과를 제공하는 경우) – bestsss
아, 그건 문질러 질 것입니다. 그래서 우리는 생각합니다. 기본적으로 createQuery가 호출 될 때마다 다시 호출됩니다. -parsed가 맞습니까? 그렇다면 패턴을 바꿔야 할 것입니다. – toths
아니요, 명명 된 쿼리를 사용하면 문자열이 파싱되지 않지만 SQL이 생성됩니다. 나는 SQL의 생성에 대해 거의 긍정적이지만 소스를 확인해야 할 수도있다. 나 자신하지만 조건을 쿼리를 사용하지 마십시오. tdavies가 가리키는대로 – bestsss