Einzel-DAO & amp; generische CRUD-Methoden (JPA / Hibernate + Spring)
Folgenden meine Vorherige Frage, DAO und Service-Layern (JPA/Hibernate + Spring)entschied ich mich für nur einen einzigen DAO für meine Daten-Schicht (zumindest am Anfang) in einer Anwendung mit JPA/Hibernate, Spring und Wicket. Die Verwendung von generischen CRUD-Methoden vorgeschlagen wurde, aber ich bin mir nicht ganz sicher, wie Sie diese umsetzen mit JPA. Könnten Sie mir bitte ein Beispiel oder ein link zu diesem?
InformationsquelleAutor der Frage John Manak | 2010-10-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Beispiel-Schnittstelle:
Und-Implementierung:
InformationsquelleAutor der Antwort Pascal Thivent
Basiert auf dem Artikel Wiederholen Sie nicht das DAO wir verwendet diese Art der Technik für viele Jahre. Wir haben immer gekämpft, mit den Problemen, mit unseren mustern, nachdem wir merkten, dass wir einen großen Fehler gemacht.
Durch die Verwendung eines ORM-tool wie Hibernate oder JPA werden Sie nicht haben, zu denken, DAO-und Service-Ebene getrennt. Sie können EntityManager von Ihrem service-Klassen, wie Sie wissen, den Lebenszyklus von Transaktionen und die Logik der entity-Klassen gibt.
Speichern Sie jede minute, wenn Sie anrufen
myDao.saveEntity
anstatt einfachentityManager.saveEntity
? Nein. Sie haben eine unnötige dao Klasse, die tut nichts anderes als ein wrapper rund um EntityManager. Nicht Angst zu schreiben, wählt in Ihrem service-Klassen mit Hilfe des EntityManager (oder einer session in hibernate).Noch ein Hinweis: definieren Sie die Grenzen Ihres service-Schicht und lassen Sie sich nicht-Programmierer, um zurückzukehren, oder warten Sie für die Entity-Klassen. Die UI oder WS layer-Programmierer sollten nicht wissen, an alle über entity Klassen nur über DTO-s. Entity-Objekte haben Lebenszyklen, die die meisten Programmierer nicht kennen. Sie haben wirklich ernsthafte Probleme, wenn Sie das speichern einer entity Objekt in die session-Daten und versuchen, zu aktualisieren es in der Datenbank von Sekunden oder Stunden später. Nun können Sie würde es nicht tun, aber ein Programmierer des UI-wer kennt die parameter-Typen und Rückgabe-Typen von Ihrem service-Schicht nur tun würde, um zu speichern einige Zeilen code.
InformationsquelleAutor der Antwort Balazs Zsoldos
Ich war auf der Suche für die gleiche Sache. Ich habe gefunden, was erscheint, um genau zu sein, dass - die Frühling-Daten JPA-Projekt zur Verfügung gestellt von SpringSource. Dies ist ein code, der Hafen von Hades und hat jetzt (Anfang 2011) wurden verschluckt von Frühling und besser integriert werden.
Es ermöglicht Ihnen die Verwendung einer einzigen dao (SimpleJpaRepository) mit einer statischen erstellen oder erweitern Sie die Basis JpaRepository Klasse zu erstellen, die jedes Objekt spezifische dao mit vorgefertigten CRUD - + - Methoden. Auch können grails-wie Abfragen, die gerade durch die Verwendung params Namen wie der name der Methode - in der Schnittstelle (keine Umsetzung erforderlich!) also
findByLastname(String lastName);
Sieht sehr vielversprechend aus - als Teil der Frühjahr-Projekte wird sicherlich eine bestimmte Zukunft für Sie zu.
Ich habe mit der Umsetzung begonnen diese in meinem nächsten Projekt.
InformationsquelleAutor der Antwort Danny C
wenn Sie sich für eine Drittanbieter-Implementierung können Sie überprüfen
http://www.altuure.com/projects/yagdao/ . es ist ein nnotation basierte generische DAO-framework unterstützt JPA und hibernate
InformationsquelleAutor der Antwort altuure
Können Sie auch einen Blick auf http://codeblock.engio.net/data-persistence-and-the-dao-pattern/
Den zugehörigen code finden Sie auf github https://github.com/bennidi/daoism
Er hat die integration mit Spring und Konfiguration Beispiele für Hibernate und EclipseLink
InformationsquelleAutor der Antwort bennidi