it-swarm.com.de

Was sind die DAO, DTO und Service-Layer in Spring Framework?

Ich schreibe RESTful-Services mit Spring und Hibernate. Ich habe viele Ressourcen im Internet gelesen, aber sie haben meine Zweifel nicht geklärt. Bitte erklären Sie mir im Detail, was DAO , DTO und Service Schichten im Federgerüst? Und warum die Verwendung dieser Schichten im Frühjahr erforderlich ist, um RESTfull-API-Services zu entwickeln.

39

Zunächst einmal sind diese Konzepte plattformunabhängig und nicht exklusiv für Spring Framework oder ein anderes Framework.


Datenübertragungsobjekt

DTO ist ein Objekt, das Daten zwischen Prozessen überträgt. Wenn Sie mit einer Remote-Schnittstelle arbeiten, ist jeder Anruf teuer. Infolgedessen müssen Sie die Anzahl der Anrufe reduzieren. Die Lösung besteht darin, ein Data Transfer Object, der alle Daten für den Anruf enthalten kann. Es muss serialisierbar sein , um über die Verbindung zu gehen. Normalerweise wird ein Assembler auf der Serverseite verwendet, um Daten zwischen dem DTO und beliebigen Domänenobjekten zu übertragen. Es ist oft nicht viel mehr als ein Haufen Felder und die Stärkeren und Stärkeren für sie.


Datenzugriffsobjekt

EIN Data Access Object abstrahiert und kapselt den gesamten Zugriff auf die Datenquelle. Das DAO verwaltet die Verbindung mit der Datenquelle, um Daten abzurufen und zu speichern.

Das DAO implementiert den Zugriffsmechanismus, der für die Arbeit mit der Datenquelle erforderlich ist. Die Datenquelle kann ein persistenter Speicher wie ein RDBMS oder ein Geschäftsdienst sein, auf den über REST oder SOAP zugegriffen wird.

Das DAO abstrahiert die zugrunde liegende Datenzugriffsimplementierung für die Service -Objekte, um einen transparenten Zugriff auf die Datenquelle zu ermöglichen. Das Service delegiert auch Datenlade- und Speicheroperationen an das DAO.


Bedienung

Service Objekte erledigen die Arbeit, die die Anwendung für die Domäne erledigen muss, mit der Sie arbeiten. Es umfasst Berechnungen auf der Grundlage von Eingaben und gespeicherten Daten, die Validierung aller von der Präsentation eingehenden Daten und die Ermittlung der genauen zu versendenden Datenquellenlogik in Abhängigkeit von den von der Präsentation empfangenen Befehlen.

EIN Service Layer definiert die Grenze einer Anwendung und ihre verfügbaren Operationen aus der Perspektive der Anbindung von Client-Layern. Es kapselt die Geschäftslogik der Anwendung, steuert Transaktionen und koordiniert die Reaktionen bei der Implementierung ihrer Operationen.


Empfohlene Referenzen

Martin Fowler hat ein großartiges Buch über gemeinsame Anwendungsarchitekturmuster mit dem Namen Muster der Unternehmensanwendungsarchitektur . Es gibt auch Core J2EE Patterns die einen Blick wert sind.

50
Ali Dehghani

DAO - Datenzugriffsobjekt :

Ein Objekt, das eine gemeinsame Schnittstelle bietet, um alle Datenbankoperationen wie den Persistenzmechanismus auszuführen.

public interface GenericDao<T> {
  public T find(Class<T> entityClass, Object id);
  public void save(T entity);
  public T update(T entity);
  public void delete(T entity);
  public List<T> findAll(Class<T> entityClass);
}

Siehe dieses Beispiel: Spring - DAO und Service Layer

DTO - Datenübertragungsobjekt :

Ein Objekt, das Daten zwischen Prozessen überträgt, um die Anzahl der Methodenaufrufe zu verringern, bedeutet, dass Sie mehr als eine POJO-Entität in der Serviceschicht kombinieren.

Beispielsweise besteht eine GET-Anforderung /rest/customer/101/orders Darin, alle Bestellungen für die Kunden-ID 101 Zusammen mit den Kundendaten abzurufen. Sie müssen daher die Entität Customer und die Entität Orders mit kombinieren Einzelheiten.

5
vels4j

Die Unternehmensanwendung ist zwecks einfacher Wartung und Entwicklung in Ebenen unterteilt. Ebenen sind auf bestimmte Arten von Aufgaben wie gewidmet

  • präsentationsschicht (UI)
  • Business-Schicht
  • Datenzugriffsschicht (DAO, DTO)

Warum dieses Design: Nehmen wir ein Beispiel: Sie haben eine Anwendung, die Daten aus db liest und eine Geschäftslogik darauf ausführt und sie dann dem Benutzer präsentiert. Wenn Sie Ihre Datenbank ändern möchten, sagen wir, dass eine frühere Anwendung unter Oracle ausgeführt wurde, möchten Sie jetzt mysql verwenden. Wenn Sie sie also nicht in Ebenen entwickeln, werden Sie Änderungen überall in der Anwendung vornehmen. Wenn Sie DAO jedoch in einer Anwendung implementieren, ist dies problemlos möglich

DAO: Datenzugriffsobjekt ist ein Entwurfsmuster, das lediglich eine Schnittstelle für den Zugriff auf die Serviceebene und verschiedene Implementierungen für verschiedene Datenquellen (Datenbanken, Dateisysteme) bereitstellt.

Beispielcode:

public interface DaoService {
    public boolean create(Object record);
    public CustomerTemp findTmp(String id);
    public Customer find(String id);
    public List getAllTmp();
    public List getAll();
    public boolean update(Object record);
    public boolean delete(Object record);   
    public User getUser(String email);
    public boolean addUser(User user);
}

Serviceschicht mit Dao

@Service("checkerService")
public class CheckerServiceImpl implements CheckerService{

@Autowired
@Qualifier("customerService")
private DaoService daoService;

Jetzt kann ich jede mögliche Implementierung der DaoService-Schnittstelle zur Verfügung stellen. Service und DTO werden auch zur Trennung von Anliegen verwendet.

4
gajendra kumar

SERVICE LAYER:

Es empfängt die Anforderung von der Controllerschicht und verarbeitet die Anforderung an die Persistenzschicht

  • @Controller: Es ist die Annotation, die die gesamte Controller-Ebene initialisiert.
  • @Service: Es ist die Annotation, die die gesamte Serviceebene initialisiert.
  • @ Repository: Es ist die Annotation, die die gesamte Persistenzschicht initialisiert.

DTO:

Hierbei handelt es sich um ein Datenübertragungsobjekt, mit dem die Eigenschaften von der Serviceschicht an die Persistenzschicht übergeben wurden.

DAO:

Es ist ein Datenzugriffsobjekt. Es ist auch als Persistenzschicht bekannt. In diesem DAO erhalten wir Eigenschaftswerte von der Serviceebene im DTO-Objekt. Hier schreiben wir eine Persistenzlogik an db.

0
Babu Babu