2010-05-28 5 views
0

Lors de l'interrogation avec JDOQL est-il une différence de performance entre l'utilisation de la version déclarative et la version unique chaîne:déclarative JDOQL vs simple chaîne JDOQL: performances

Exemple du 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); 

Autre que la performance, y a-t-il des raisons pour lesquelles il est préférable d'utiliser l'autre ou est-ce juste celui avec lequel nous nous sentons plus à l'aise.

+0

La première forme supporte au moins * un * refactoring (elle survit en renommant la 'Person' classe, les changements d'attributs gâchent encore, cependant). –

Répondre

2

Pas de différence de performance du tout. La seule chose qui arrive est que la forme de chaîne unique est analysée dans les composants. Utilisez ce que vous trouvez le plus pratique. Vous pouvez également utiliser JDOQL de QueryDSL. JDO3.x a prévu la fourniture d'une API de requête refactorisable sécurisée, mais quelque chose qui est utilisable (contrairement aux critères JPA2) semblable à QueryDSL

+0

Voici le lien manquant à Querydsl: http://source.mysema.com/display/querydsl/Querydsl –

Questions connexes