¿Cuál es la diferencia entre un objeto de acceso a datos y un registro activo? Parecen ser lo mismo, ya que ambos construyeron una capa entre la aplicación y la capa de persistencia, y abstraen el acceso directo a la base de datos utilizando consultas SQL.Diferencia entre Active Record y DAO?
Respuesta
Objeto de acceso a datos (DAO) se refiere a un objeto en su capa de datos responsable de persistir una entidad separada en su dominio. Active Record es híbrido cuando la clase que contiene los valores de una sola fila de una tabla también es responsable de las consultas, actualizaciones, inserciones y eliminaciones de esa tabla. El patrón de diseño Active Record significa que su objeto tiene una asignación de uno a uno con una tabla en su base de datos.
A Objeto de acceso a datos (DAO) es una interfaz dedicada a la persistencia de un objeto de modelo/dominio a una fuente de datos, y no a cualquier objeto en la capa de datos. Aquí hay un reference.
El patrón ActiveRecord funciona de manera similar, pero coloca los métodos de persistencia en el objeto modelo en sí, mientras que el DAO define una interfaz discreta. La ventaja del patrón DAO es:
Su fácil de definir otro estilo de persistencia, por ejemplo, pasar de una base de datos a la nube, sin cambiar la impelementation subyacente, mientras que la interfaz externa sigue siendo la misma, por lo tanto no afecta a otra clases
Las preocupaciones de persistencia están moduladas lejos de las preocupaciones principales del objeto modelo.
La ventaja del patrón ActiveRecord es la simplicidad.
- 1. ¿Cuál es la diferencia entre {active: "yes"} y {"active": "yes"}?
- 2. attr_accessible in rails Active Record
- 3. codeigniter active record where, or_where?
- 4. ¿Cuáles son las diferencias entre el patrón Active Record y Repository?
- 5. Rails Active Record translation: Auto capitalize/downcase?
- 6. Cómo desactivar auto_increment en Rails Active Record
- 7. Ruby on Rails Active Record Attribute Introspection
- 8. CodeIgniter - Active Record - sql - complejo unen
- 9. Obteniendo código SQL actual CodeIgniter Active Record
- 10. Diferencia entre NativeGuid y Guid en Active Directory
- 11. Diferencia entre mensajes pendientes y Enqueue Counter en Active MQ?
- 12. ¿Cómo implementar la herencia Active Record en Ruby on Rails?
- 13. my_object.save (falso) no omite REALMENTE mis validaciones de Active Record
- 14. Rails Active Record seleccione padre e hijo como un resultado
- 15. ¿Qué significa Doctrine Add Above Active Record - CodeIgniter?
- 16. Actualización con el límite 1 en codeigniter use active record
- 17. ¿Utiliza generadores Active Record después de la instalación de Mongoid?
- 18. Active Record has_many genera sql con clave foránea IS NULL
- 19. Data Mapper es una tendencia más moderna que Active Record
- 20. ¿Hay un archivo de traducción inglés predeterminado para Active Record?
- 21. Rails Active Record find (: all,: order =>) issue
- 22. fin Active Record por el tamaño del grupo
- 23. Rieles: error constante no inicializado en Active Record destroy
- 24. cómo usar IN & Between Clause en YII ACtive Record?
- 25. problema con los "count_all_results" y "dónde" con Active Record en CodeIgniter
- 26. Xcode iPhone - Base SDK, diferencia Active SDK?
- 27. Creación dinámica de nuevos modelos de Active Record y tablas de base de datos
- 28. ¿Cuáles son los pros y los contras de usar Castle Active Record vs Straight NHibernate?
- 29. ¿Qué patrón se ajusta entre una fachada y un DAO?
- 30. DAO y Servicio?
Creo que su primera viñeta es inexacta. Tal vez en algunas implementaciones, pero en otros es completamente posible cambiar el mecanismo de persistencia (incluso en tiempo de ejecución) relacióndb, archivo plano o servicio web sin cambiar la interfaz ... especialmente si esa interfaz está bien diseñada (es decir, es solo crear, leer , actualizar, eliminar). La diferencia es que (una vez más, dependiendo de la implementación ... ya que estos rasgos se pueden mezclar con muchos idiomas ...) – Mainguy
@Mainguy Sí, si el lenguaje proporciona mezclas sin esfuerzo y dinámicas (no estáticas) se podrían cumplir los objetivos DAO ya por ActiveRecord. –