Estoy leyendo el oficial Tu primera aplicación basada en NHibernate .
Si bien el tutorial es bueno y fácil de seguir, me pregunto por qué se usa el patrón Repository.
En las diversas Add
, Update
, Remove
métodos en la ProductRepository
implementación, el código es casi idéntica - todos ellos están utilizando transacciones, y la diferencia está en la "carne", es decir llamada session.Save
int el Add
método, session.Delete
en el remove
método. ( La página carece de anclajes HTML, pero puede buscar en la página el código relevante como public void Remove
,public void Add
)
Ese código simplemente "se siente mal".
¿Por qué el autor usa el patrón Repository? ¿Es solo para demostrar el uso de NHibernate o es necesario o por alguna otra razón?
PD. Mi experiencia es de Ruby on Rails usando ActiveRecord, así que estoy tratando de entender cómo funciona / se utiliza NHibernate.
fuente
Respuestas:
No se requiere el patrón de repositorio. En cuanto a todos los demás patrones, es una decisión "arquitectónica" que debe tomar contra las necesidades de su negocio. En general, el Patrón de repositorio se utiliza para implementar la "Ingorancia de persistencia de entidad", lo que significa que sus entidades no saben nada sobre cómo persistir en su dispositivo de almacenamiento (Base de datos, XML, TextFile, etc.). Si, por ejemplo, tiene una dirección de entidad, no contendrá la lógica de persistencia (no encontrará en ninguna parte algo como address.Save o address.Update) pero pasará su entidad a un método de repositorio que se encarga de persistir cambios
fuente
La ventaja de usar el patrón de repositorio es burlarse de su capa de acceso a datos, para que pueda probar el código de su capa empresarial sin llamar al código DAL. Hay otras grandes ventajas, pero esto parece ser muy vital para mí.
fuente