2010-05-28 3 views
0

JDOQL로 질의하는 선언적 버전 단일 문자열 버전 사용 간의 성능 차이이다선언적 JDOQL : 성능

예제 JDOQL의 문서에서 :

//Declarative JDOQL : 
Query q = pm.newQuery(org.jpox.Person.class, "lastName == \"Jones\" && age < age_limit"); 
q.declareParameters("double age_limit"); 
List results = (List)q.execute(20.0); 

//Single-String JDOQL : 
Query q = pm.newQuery("SELECT FROM org.jpox.Person WHERE lastName == \"Jones\"" + 
         " && age < :age_limit PARAMETERS double age_limit"); 
List results = (List)q.execute(20.0); 

은 그 다음에는 다른 사람이 사용하는 것이 더 낫다는 이유나, 우리가 더 편하게 느끼는 것에 관한 것입니다.

+0

첫 번째 양식은 적어도 * some * 리팩터링을 지원합니다 ('Person' 그러나 속성 변경은 여전히 ​​엉망입니다. –

답변

2

성능 차이가 전혀 없습니다. 유일한 일은 단일 문자열 형식이 구성 요소로 구문 분석된다는 것입니다. 가장 편리하다고 생각되는 것을 사용하십시오. 또는 QueryDSL의 JDOQL을 사용하십시오. JDO3.x는 형식에 안전한 refactorable 질의 API를 제공 할 예정이지만 QueryDSL과 비슷한 (JPA2 Criteria와 달리) QueryDSL에 가깝습니다.

+0

다음은 Querydsl에 대한 누락 된 링크입니다. http://source.mysema.com/display/querydsl/Querydsl –