El patrón de objeto de acceso a datos o patrón DAO se utiliza para separar las operaciones o la API de acceso a datos de bajo nivel de los servicios comerciales de alto nivel. Los siguientes son los participantes en el patrón de objetos de acceso a datos.
Patrón de objeto de acceso a datos de diagrama UML
Ventajas
1. La ventaja de usar objetos de acceso a datos es la separación relativamente simple y rigurosa entre dos partes importantes de una aplicación que pueden pero no deben saber nada entre sí, y que se puede esperar que evolucionen con frecuencia e independientemente.
2. Si necesitamos cambiar el mecanismo de persistencia subyacente, solo tenemos que cambiar la capa DAO y no todos los lugares en la lógica del dominio desde donde se usa la capa DAO.
Desventajas
1. Las desventajas potenciales de usar DAO son una abstracción con fugas, duplicación de código e inversión de abstracción.
Componentes de diseño
- BusinessObject: BusinessObject representa el cliente de datos. Es el objeto que requiere acceso a la fuente de datos para obtener y almacenar datos. Un BusinessObject puede implementarse como un bean de sesión, un bean de entidad o algún otro objeto Java además de un servlet o bean auxiliar que accede a la fuente de datos.
- DataAccessObject: DataAccessObject es el objeto principal de este patrón. DataAccessObject abstrae la implementación de acceso a datos subyacente para BusinessObject para permitir un acceso transparente a la fuente de datos.
- DataSource: esto representa una implementación de fuente de datos. Una fuente de datos podría ser una base de datos como RDBMS, OODBMS, repositorio XML, sistema de archivos planos, etc. Una fuente de datos también puede ser otro servicio del sistema o algún tipo de repositorio.
- TransferObject: Esto representa un Transfer Object utilizado como soporte de datos. El DataAccessObject puede usar un Transfer Object para devolver datos al cliente. El DataAccessObject también puede recibir los datos del cliente en un Transfer Object para actualizar los datos en la fuente de datos.
Ejemplo:
Java
// Java program to illustrate Data Access Object Pattern // Importing required classes import java.util.ArrayList; import java.util.List; // Class 1 // Helper class class Developer { private String name; private int DeveloperId; // Constructor of Developer class Developer(String name, int DeveloperId) { // This keyword refers to current instance itself this.name = name; this.DeveloperId = DeveloperId; } // Method 1 public String getName() { return name; } // Method 2 public void setName(String name) { this.name = name; } // Method 3 public int getDeveloperId() { return DeveloperId; } // Method 4 public void setDeveloperId(int DeveloperId) { this.DeveloperId = DeveloperId; } } // Interface interface DeveloperDao { public List<Developer> getAllDevelopers(); public Developer getDeveloper(int DeveloperId); public void updateDeveloper(Developer Developer); public void deleteDeveloper(Developer Developer); } // Class 2 // Implementing above defined interface class DeveloperDaoImpl implements DeveloperDao { List<Developer> Developers; // Method 1 public DeveloperDaoImpl() { Developers = new ArrayList<Developer>(); Developer Developer1 = new Developer("Kushagra", 0); Developer Developer2 = new Developer("Vikram", 1); Developers.add(Developer1); Developers.add(Developer2); } // Method 2 @Override public void deleteDeveloper(Developer Developer) { Developers.remove(Developer.getDeveloperId()); System.out.println("DeveloperId " + Developer.getDeveloperId() + ", deleted from database"); } // Method 3 @Override public List<Developer> getAllDevelopers() { return Developers; } // Method 4 @Override public Developer getDeveloper(int DeveloperId) { return Developers.get(DeveloperId); } // Method 5 @Override public void updateDeveloper(Developer Developer) { Developers.get(Developer.getDeveloperId()) .setName(Developer.getName()); System.out.println("DeveloperId " + Developer.getDeveloperId() + ", updated in the database"); } } // Class 3 // DaoPatternDemo class GFG { // Main driver method public static void main(String[] args) { DeveloperDao DeveloperDao = new DeveloperDaoImpl(); for (Developer Developer : DeveloperDao.getAllDevelopers()) { System.out.println("DeveloperId : " + Developer.getDeveloperId() + ", Name : " + Developer.getName()); } Developer Developer = DeveloperDao.getAllDevelopers().get(0); Developer.setName("Lokesh"); DeveloperDao.updateDeveloper(Developer); DeveloperDao.getDeveloper(0); System.out.println( "DeveloperId : " + Developer.getDeveloperId() + ", Name : " + Developer.getName()); } }
DeveloperId : 0, Name : Kushagra DeveloperId : 1, Name : Vikram DeveloperId 0, updated in the database DeveloperId : 0, Name : Lokesh
Este artículo es una contribución de Saket Kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA