2009-10-04 8 views
0

Pour la partie statistique d'une application, plusieurs requêtes changent souvent et sont également longues. Les deux arguments IMHO pour supprimer les requêtes du code source et les mettre quelque part où ils peuvent être facilement édités dans un format convivial et également copier/coller depuis et vers un éditeur QL. Ceci disqualifie les requêtes nommées de JPA.Pratique recommandée pour l'externalisation des requêtes dans J2EE (joint spécifique)

L'environnement est une application Seam, mais cette question peut être intéressante pour J2EE en général. De mon point de vue il y a trois solutions: Pour les requêtes statiques relatives, je peux utiliser une maison de requête gérée par Seam, mais la gestion des requêtes paramétrées devient moche quand vos paramètres ne sont pas dans une portée et sont passés comme paramètres de méthode.

Ma solution actuelle consiste à placer toutes les requêtes dans un fichier de messages Seam et à y accéder via la matrice de messages. Une troisième façon serait de créer votre propre composant Seam qui lit les requêtes de quelque part et les fournit.

Comment avez-vous géré un tel scénario? Ai-je manqué une solution évidente?

Répondre

1

Aujourd'hui est apparu similar but not Seam specyfic question in SO, peut-être vous y trouverez quelques idées.

+0

J'ai fini par utiliser la même solution que celle proposée dans la question référencée, avec une petite modification: formuler chaque requête sql dans un seul fichier, fusionner les fichiers dans le fichier de propriétés avec la tâche maven, utiliser le fichier via le composant seam. –

0
+0

Merci pour la réponse, c'était la première approche que j'ai décrite, comme mentionné, à mon humble avis, il a les inconvénients de la paramétrisation non délimitée (ou son absence). –

+0

Vous pouvez également utiliser groovy et ses cordes multilignes (vous pouvez faire des composants groovy couture). Dans ce cas, chaque solution a ses inconvénients. – IAdapter

+0

J'ai mis mes requêtes dans components.xml. Je sépare mes composants par projet, donc si j'utilise une requête seulement dans un projet particulier à un certain niveau, je le déclare là. Un problème JIRA est déposé pour les externaliser en dehors de XML, éventuellement dans la classe d'entité, la classe de service ou tout autre emplacement spécifique dans lequel il est utilisé. Ce serait très similaire à la syntaxe de type @NamedQuery (name = "", query = "") .... –

Questions connexes