Maison >Java >javaDidacticiel >DTO et DAO dans le développement de logiciels
DTO (Data Transfer Object) et DAO (Data Access Object) sont des modèles de conception clés souvent utilisés dans le développement de logiciels, en particulier dans les applications basées sur Java. Voici une explication de chacun et comment ils sont liés :
DTO (Objet de transfert de données) :
Objectif : DTO est un objet simple conçu pour transférer des données entre des couches ou des processus dans une application.
Cas d'utilisation : il est souvent utilisé pour encapsuler les données de manière à minimiser le nombre d'appels de méthode (en regroupant les données associées) et à garantir qu'aucune logique métier inutile n'y réside.
Caractéristiques :
Contient des champs pour stocker des données.
Aucune logique ou méthode métier à l'exception des getters et setters.
Peut être sérialisé pour la communication réseau ou les réponses API.
Exemple de DTO :
classe publique UserDTO {
nom d'utilisateur de chaîne privée ;
e-mail de chaîne privée ;
// Constructor public UserDTO(String username, String email) { this.username = username; this.email = email; } // Getters and setters public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; }
}
DAO (Objet d'accès aux données) :
Objectif : DAO est responsable de l'interaction avec la base de données. Il fournit des méthodes pour effectuer des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) sur une source de données, en faisant abstraction de la logique de persistance.
Cas d'utilisation : il sépare les opérations de base de données de la logique métier, en adhérant au principe de responsabilité unique.
Caractéristiques :
Encapsule les requêtes SQL ou la logique ORM (comme Hibernate, JPA).
Interfaces avec la couche base de données.
Fournit des méthodes réutilisables telles que save(), findById(), delete(), etc.
Exemple de DAO :
importer java.sql.Connection;
importer java.sql.PreparedStatement;
importer java.sql.ResultSet;
classe publique UserDAO {
connexion de connexion privée ;
public UserDAO(Connection connection) { this.connection = connection; } public UserDTO getUserById(int id) throws Exception { String query = "SELECT username, email FROM users WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(query); statement.setInt(1, id); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { String username = resultSet.getString("username"); String email = resultSet.getString("email"); return new UserDTO(username, email); } return null; } public void saveUser(UserDTO user) throws Exception { String query = "INSERT INTO users (username, email) VALUES (?, ?)"; PreparedStatement statement = connection.prepareStatement(query); statement.setString(1, user.getUsername()); statement.setString(2, user.getEmail()); statement.executeUpdate(); }
}
Intégration :
Dans une application, un DAO récupère les données de la base de données, les convertit en objets DTO et les envoie à d'autres couches (comme des services ou des contrôleurs).
Exemple de flux :
Couche contrôleur : appelle la couche service.
Couche de service : interagit avec le DAO pour récupérer ou enregistrer des données.
Couche DAO : récupère les données, les convertit en DTO et les renvoie.
Exemple de code :
// Contrôleur
public UserDTO getUserDetails (int id) {
retourner userService.getUserById(id);
>
// Service
public UserDTO getUserById (int id) {
retourner userDAO.getUserById(id);
>
Avantages :
DTO : optimise le transfert de données et dissocie les réponses de l'interface utilisateur ou de l'API externe des entités internes.
DAO : centralise la logique d'accès à la base de données, la rendant réutilisable et testable.
Faites-moi savoir si vous souhaitez une explication plus approfondie ou des exemples !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!