Bonjour, J'ai un problème avec les topia query, je trouve ça complètement illisible et inmaintenable sans le commentaire qui va avec (et encore...) Un petit exemple: http://nopaste.info/42be32d097.html C'est sans doute dû à la combinaison des alias et des properties : .addInElements("E." + ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD, "F." + FiscalPeriod.PROPERTY_FINANCIAL_PERIOD) au lieu de simplement "E.financialPeriod IN F.financialPeriod" Certes, c'est "compilé", mais c'est très difficilement lisibles. Avez vous des retours la dessus sur des exemples compliqués et des sous requêtes ? -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
On 21/02/2012 17:22, Eric Chatellier wrote:
Bonjour,
J'ai un problème avec les topia query, je trouve ça complètement illisible et inmaintenable sans le commentaire qui va avec (et encore...)
Un petit exemple: http://nopaste.info/42be32d097.html
C'est sans doute dû à la combinaison des alias et des properties : .addInElements("E." + ClosedPeriodicEntryBook.PROPERTY_FINANCIAL_PERIOD, "F." + FiscalPeriod.PROPERTY_FINANCIAL_PERIOD) au lieu de simplement "E.financialPeriod IN F.financialPeriod"
Certes, c'est "compilé", mais c'est très difficilement lisibles.
Avez vous des retours la dessus sur des exemples compliqués et des sous requêtes ?
Je suis d'accord, mais cela n'est pas dû à la TopiaQuery mais au HQL en général. D'où mes idées de générer les propriétés un peu plus façon DSL avec le TopiaQueryHelperTransformer (je ne suis plus sûr du nom). Mais je pencherais plus pour d'autres solutions comme queryDSL ou sinon tout simplement du "full text" pour les requêtes et donc plus de noms de propriétés en constantes statiques. J'ai l'impression de revenir en arrière en disant ça, mais la problématique reste pas évidente et les solutions diverses. Je n'ai pas encore trouvé LA solution pour avoir des requêtes à la fois lisibles et sûrs (en mode objet et donc compilable). Ça reste toujours mieux que l'api Criteria de la JSR. Mais ce n'est que mon point de vue évidemment. L'idée de la TopiaQuery c'est ce petit mélange HQL/Objet. Cela garde la souplesses du HQL pour les requêtes compliquées et évite de rajouter X méthodes spécifiques. En contre-partie tu as une plus grande facilité de créer des requêtes dynamiques avec conditions, ce qui devient très vite illisible en concaténant un String HQL. La question donc : As t'on un réel intérêt à utiliser de façon systématique les constantes pour les noms de propriété ? On sait tous que finalement, on ne change pas tous les 4 matins les noms des champs ! De plus si toutes les requêtes sont dans les DAO, le refactor reste ciblé. J'ouvre un troll, mais cela mérite le débat.
Le 23/02/2012 01:01, Florian Desbois a écrit :
J'ouvre un troll, mais cela mérite le débat.
Nous avons un peu débattu à ce sujet hier. Après plusieurs réflexion, il en ai sortit que les requêtes n'étaient pas utile dans la majorité des applications de gestion d'entités (crud). Les seuls besoin nécessitant d'utiliser des requêtes étant pour: - des raisons de performance - génération de rapport - etc... Concernant les requêtes en elles-même, il est ai ressortit que le fait qu'elles soient écrites en hql n'est pas gênant ssi elles sont écrites dans les DAO (fichier généré par topia, et donc faisant partit intégrante du code généré). En conclusion, nous pensons que la TopiaQuery n'est devrait plus être utilisée et qu'aucune API de remplacement n'était nécessaire pour le moment (attente d'un besoin futur). -- Éric Chatellier <chatellier@codelutin.com> Tel: 02.40.50.29.28 http://www.codelutin.com
Concernant les requêtes en elles-même, il est ai ressortit que le fait qu'elles soient écrites en hql n'est pas gênant ssi elles sont écrites dans les DAO (fichier généré par topia, et donc faisant partit intégrante du code généré). Oui je rajouterais juste qu'on ne pourra jamais trouver une api de requétage aussi puissante que l'api soujacente. Meixu vaut donc pour ma
On Wed, 14 Mar 2012 14:40:18 +0100 Eric Chatellier <chatellier@codelutin.com> wrote: part utiliser celle de hibernate (ou jps pour topia3) dans le projet client. On a déja un peu discuté avec Brendan et Arnaud sur le fait de pouvoir générer plus de méthodes dans les dao via des tag-values... Cela permettrait d'encore moins à écrire de code... A suivre.
En conclusion, nous pensons que la TopiaQuery n'est devrait plus être utilisée et qu'aucune API de remplacement n'était nécessaire pour le moment (attente d'un besoin futur).
Il faut donc expressement mettre tout le code de ces queries dans la couche persistence des applications (si c'est pas déjà le cas) Comme ça la migration vers topia 3 ne demandera juste la réécriture des requète si besoin est. -- Tony Chemit -------------------- tél: +33 (0) 2 40 50 29 28 email: chemit@codelutin.com http://www.codelutin.com
participants (3)
-
Eric Chatellier -
Florian Desbois -
Tony Chemit