stringtranslate.com

Objeto de acceso a datos

En software , un objeto de acceso a datos ( DAO ) es un patrón que proporciona una interfaz abstracta para algún tipo de base de datos u otro mecanismo de persistencia . Al asignar llamadas de aplicaciones a la capa de persistencia, DAO proporciona operaciones de datos sin exponer los detalles de la base de datos. Este aislamiento respalda el principio de responsabilidad única . Separa el acceso a los datos que necesita la aplicación, en términos de objetos y tipos de datos específicos del dominio (la interfaz pública de DAO), de cómo estas necesidades pueden satisfacerse con un DBMS específico (la implementación de DAO).

Aunque este patrón de diseño es aplicable a la mayoría de los lenguajes de programación, a la mayoría del software con necesidades de persistencia y a la mayoría de las bases de datos, se asocia tradicionalmente con aplicaciones Java EE y con bases de datos relacionales (a las que se accede a través de la API JDBC debido a su origen en las pautas de mejores prácticas de Sun Microsystems). [1] "Patrones principales de J2EE".

Este objeto se puede encontrar en la capa de Acceso a datos de la Arquitectura de 3 niveles .

Hay varias formas en que se puede implementar este objeto:


Ventajas

El uso de objetos de acceso a datos (DAO) ofrece una clara ventaja: separa dos partes de una aplicación que no necesitan conocerse entre sí. Esta separación les permite evolucionar de forma independiente. Si la lógica empresarial cambia, puede depender de una interfaz DAO consistente. Mientras tanto, las modificaciones a la lógica de persistencia no afectarán a los clientes DAO. [2] [3]

Todos los detalles del almacenamiento están ocultos del resto de la aplicación (ver información sobre ocultación ). El código de prueba unitaria se facilita sustituyendo el DAO por un doble de prueba en la prueba, lo que hace que las pruebas sean independientes de la capa de persistencia.

En el contexto del lenguaje de programación Java , DAO se puede implementar de varias maneras. Esto puede variar desde una interfaz bastante simple que separa el acceso a los datos de la lógica de la aplicación hasta marcos y productos comerciales.

Tecnologías como Java Persistence API y Enterprise JavaBeans vienen integradas en servidores de aplicaciones y se pueden utilizar en aplicaciones que utilizan un servidor de aplicaciones Java EE. Productos comerciales como TopLink están disponibles basados ​​en mapeo relacional de objetos (ORM). El popular software ORM de código abierto incluye implementaciones Doctrine , Hibernate , iBATIS y JPA, como Apache OpenJPA . [4]

Desventajas

Las posibles desventajas del uso de DAO incluyen abstracción con fugas , [ cita requerida ] duplicación de código e inversión de abstracción . En particular, la abstracción del DAO como un objeto Java normal puede ocultar el alto costo de cada acceso a la base de datos. Los desarrolladores pueden realizar sin darse cuenta varias consultas a la base de datos para recuperar información que podría devolverse en una sola operación. Si una aplicación requiere múltiples DAO, es posible que deba escribirse el mismo código de creación, lectura, actualización y eliminación para cada DAO. [5]

Tenga en cuenta que estas desventajas solo aparecen cuando tiene un DAO separado para cada tabla y la consulta SELECT no puede acceder a nada que no sea la tabla de destino.

Herramientas y marcos

Ver también

Referencias

  1. ^ "Patrones principales de J2EE: objetos de acceso a datos". Sun Microsystems Inc. 2007-08-02.
  2. ^ "Patrón de diseño de objetos de acceso a datos (DAO)". Océano Digital . 2022-08-03 . Consultado el 8 de julio de 2024 .
  3. ^ "Patrón de diseño de objetos de acceso a datos (DAO)". Geeks para Geeks . 2017-08-26 . Consultado el 8 de julio de 2024 .
  4. ^ "Patrón de diseño de objetos de acceso a datos (DAO)". Geeks para Geeks . 2017-08-26 . Consultado el 29 de enero de 2024 .
  5. ^ Consulte http://www.ibm.com/developerworks/java/library/j-genericdao/index.html para encontrar soluciones alternativas.
  6. ^ Hodgson, Kyle; Reid, Darren (23 de enero de 2015). Libro de recetas de ServiceStack 4. Packt Publishing Ltd. pág. Capítulo 4. ISBN 9781783986576. Consultado el 22 de junio de 2016 .