Le Thu, 31 Dec 2009 15:28:27 +0100, Julien Ruchaud <julien.ruchaud@codelutin.com> a écrit :
Moi je voulais rebondir là dessus, à mon avis c'est ton index qui fait gagner du temps et pas l'utilisation ou non des criterias. De toute façon si tu utilises des criterias ou des requêtes hql, le résultat devrait être le même en SQL. C'est une certitude de ta part ou juste une supposition ?
Il y a donc un réel souci sur l'utilisation des Criteria d'Hibernate dans ToPIA.
En parallèle j'ai travaillé sur une classe pour facilement construire une requête HQL (voir : http://nuiton.org/issues/show/178 ).
Cette classe (TopiaQuery) est vraiment simple d'utilisation et permet de créer différentes requêtes plus ou moins complexe et d'interpréter précisément les résultats (type de retour). En essayant de remplacer toutes les utilisations des Criteria par cette classe, le temps d'exécution a fortement diminué, notamment sur une grosse exécution comme décrite plus haut.
Alors l'idée, est-ce que ça vous convient de remplacer les criteria par l'utilisation de TopiaQuery ?
Tu vas pas réussir à avoir les mêmes possibilités que les criterias ou la syntaxe hql. Juste un exemple comment tu fais pour faire des jointures ou des sous-requêtes ? Ca me rappelle un peu Sandra avec des requêtes qu'on peut qualifier de monstrueuse,non Julien :) Dans tous les cas cela ne change rien à la problématique des DAO de ToPIA. Tu pourras toujours faire des requêtes de folies en récupérant la session hibernate, donc je vois le fondement de ton objection :) Il s'agi juste de remplacer l'utilisation des Criteria dans les findXXX dans les DAO générés qui n'utilisent
Le mieux c'est de regarde les requètes passées. dans tous les cas, je suis vraiment pour qu'on retravaille un peu les DAO de ToPIA car dans tous les cas le code n'est pas optimisé du tout... : remonter toute une partie de la base pour juste ensuite en java faire des boucles pour récupérer les résultats qui nous intéresse c'est pas top. Cela fonctionne tant qu'on a pas de gros volumes de données à traiter, non ? pas (je pense, mais j'en suis pas sûr...) de sous-requêtes ou jointure; j'espère ne pas me tromper ;) -- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com