Motif d'objet de requête (motif de conception)
J'ai besoin d'implémenter un Objet de Requête Motif en Java pour mon personnalisables interface de recherche (d'une webapp je suis en train d'écrire).
Quelqu'un sait où je peux obtenir un exemple de/tutoriel Objet de la Requête Motif (Martin Fowler QoP)?
Merci d'Avance
PLUS Comment ajouter un Modèle de Requête à un pattern DAO?
source d'informationauteur Buhake Sindi
Vous devez vous connecter pour publier un commentaire.
Le mot "modèle" dans la partie "Requête Objet Pattern" est (à mon humble avis) égaré. C'est pas un vrai motif de conception. La Requête "Objet" est juste un autre exemple de la Interprète Modèle. L'héritage Hibernate Critères d'API et le moderne JPA2 Critères d'API sont un excellent exemple qui se combine avec la Le Générateur De Modèle.
À votre question:
Je recommanderais de regarder JPA2.
Objet De Requête
Un objet qui représente une requête de base de données.
Pour une description complète, voir ici
SQL peut être un langage, et de nombreux développeurs ne sont pas particulièrement familier avec elle. En outre, vous devez savoir ce que le schéma de base de données ressemble à la forme de requêtes. Vous pouvez éviter cela en créant spécialisé finder méthodes qui masquent le SQL paramétrée à l'intérieur de méthodes, mais qui les rend difficiles à former davantage de requêtes ad-hoc. Elle a également conduit à des doublons dans les instructions SQL si le schéma de base de données de changement.
Un Objet de Requête est un interprète ["bande des Quatre"], qui est une structure d'objets qui peuvent se former lui-même dans une requête SQL. Vous pouvez créer cette requête en se référant à des catégories et des champs plutôt que des tables et des colonnes. De cette façon, ceux qui écrivent les requêtes peuvent le faire indépendamment du schéma de base de données et des modifications du schéma peuvent être localisés dans un seul endroit.
J'ai écrit en C# pour la mise en œuvre NHibernate ici: https://github.com/shaynevanasperen/NHibernate.Sessions.Operations.
Il fonctionne en utilisant une interface comme ceci:
Donné un POCO de l'entité de la classe comme ceci:
Vous pouvez créer des objets de requête comme ceci:
Et puis les utiliser comme ceci:
Vous pourriez port de Java si vous le souhaitez.
Voici quelques autres exemples:
https://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/
http://www.mrdustpan.com/command-query-objects-with-dapper#disqus_thread
http://crosscuttingconcerns.com/CommandQuery-Object-pattern