2010-05-28 78 views
0

當與JDOQL查詢是有使用聲明性版本和單串版本之間的性能差異:聲明JDOQL VS單串JDOQL:性能

實施例從JDOQL DOC:

//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'然而,類,屬性的變化仍然讓它變得糟糕)。 – 2010-05-28 09:58:33

回答

2

沒有性能差異。發生的唯一情況是單字符串表單被解析爲組件。使用哪個你覺得最方便。或者使用QueryDSL的JDOQL。 JDO3.x提供了一個類型安全的可重構查詢API,但是可用的(不像JPA2標準)類似於QueryDSL

+0

以下是Querydsl缺失的鏈接:http://source.mysema.com/display/querydsl/Querydsl – 2010-06-06 17:14:51