Ich arbeite an einem JAX-RS-Projekt mit einer DAO-Schicht. Ich bin mir nicht sicher, welcher Architektur ich folgen soll.Wo/wann sollten die DAOImplementation-Instanzen gefunden/erstellt werden?
Zum Beispiel haben wir eine ProductDAOImpl
Klasse, die eine ProductDAO
Schnittstelle implementiert, und eine ProductRS
Klasse als Einstiegspunkt für den REST-Dienst der Produkte.
Frage 1
Wo soll die ProductDAO
(eigentlich ProductDAOImpl
) Instanz geschaffen werden?
Optionen:
A) Bei jedem Verfahren der ProductRS
Klasse, die den Zugriff auf das Produkt braucht?
B) Als Mitglied der ProductRS
Klasse?
(? Kann diese Option Daten Rennen Nicht sicher vorstellen, wie der Container die REST-Services-Klassen behandelt -. Möglicherweise 2 im Zusammenhang unten auf Frage)
Frage 2
Soll ich Anmerkungen für JAX-RS-Klassen verwenden, z als @Stateless
?
Frage 3
Was sind die besten Praktiken für die Architektur und Klassenverhältnis in einer JAX-RS-Anwendung mit einer DAO-Schicht und möglicherweise eine Service-Schicht?
(Alle Links zu diesem Thema zu studieren, sind mehr als willkommen.)
Frage 4
Sollten die DAO-Implementierungsklassen statische Methoden zur Verfügung stellen? (Als here gesehen)
Implementierung spezifische Details
Verwendung Jersey Umsetzung JAX-RS mit Glassfish-Server und eine DAO Schicht mit JDBC Zugriff auf die Datenquelle.
Vielen Dank für Ihre Antwort! Reg. Frage 4, sie verwenden 'UserDAO.findAllUsers()', und es gibt kein Instanzmitglied von 'UserDAO', also muss die Methode statisch sein (aber wie ich gesehen habe, DI mit statischen Methoden verwendend, verheißt das nichts Gutes). – Chris
Aktualisiert, es gibt verwandte SO-Diskussionen. – Justas