Hola a todos, siguiendo con el post anterior, en este nuevo post implementaremos la Capa de Logica de Negocios de nuestra aplicación de ejemplo.
(*) Los Archivos de mapeo (hbm) lo pueden generar a partir de MyGeneration como es mi caso. en todo caso no los puse en el post anterior.
Bueno regresemos, Al igual que en nuestra capa de datos, donde se implemento abstract factory , en nuestra capa de negocios tambien implementaremos abstrac factory de manera similar.
Entonces la implementación seria la siguiente:
La Interfaz IGenericController:
La interfaz declara los metodos genericos para la manipulación de nuestras entiades de negcios.
using System.Collections; namespace NHBussines IList<T> FindAll(); IList<T> FindAllOrdered(IList<string> propertyNames); IList<T> FindByExample(T entity); IList<T> FindBydExampleOrdered(T entity, IList<string> propertyNames); IList<T> FindLikeExample(T entity); IList<T> FindLikeExampleOrdered(T entity, IList<string> propertyNames); IList<T> FindLikeExampleIgnoreCase(T entity); IList<T> FindLikeExampleIgnoreCaseOrdered(T entity, IList<string> propertyNames); IList<T> FindByQuery(string query); IList<T> FindByQuery(string query, string[] parameters, object[] values); IList<T> FindByNamedQuery(string query); IList<T> FindByNamedQuery(string query, string[] parameters, object[] values); IList FindObjectsByQuery(string query); IList FindObjectsByNamedQuery(string query); IList FindObjectsByNamedQuery(string query, string[] parameteres, object[] values); IList FindObjectsBySQLQuery(string query, string[] parameters, object[] values); T Save(T entity); T Update(T entity); void DeleteById(Id id); void Delete(T entity); Id GetMax(string propertyName); |
GenericController:
Implementa la Interfaz IGenericController, atravez del GenericDAO, Tambien implementa el Metodo Instance , como la clase GenericControler es una clase abstracta esta no puede instarciarse utilizando el operador new(), utilizando este Metodo podemos instanciar esta clase abstracta.
Tambien es importante mencionar que para los metodos de CRUD, utilizamos los métodos de transaccionalidad de Nhibernate, estos metodos estan provistos por la clase estatica NHibernateHelper, Estos Metodos son:
BeginTransacction(); Inicializa una transaccion
EndTransacction(); Finaliza la trasaccion y reliza el repectivo commit
RollbackTransacction(); Hace una vuelta atras o rollback a la transaccion.
using System; public DAOFactory DaoFactory public IGenericDAO<T, Id> GenericDao { get; set; } public T FindByid(Id id) public IList<T> FindAll() public IList<T> FindAllOrdered(IList<string> propertyNames) public IList<T> FindByExample(T entity) public IList<T> FindBydExampleOrdered(T entity, IList<string> propertyNames) public IList<T> FindLikeExample(T entity) public IList<T> FindLikeExampleOrdered(T entity, IList<string> propertyNames) public IList<T> FindLikeExampleIgnoreCase(T entity) public IList<T> FindLikeExampleIgnoreCaseOrdered(T entity, IList<string> propertyNames) public IList<T> FindByQuery(string query) public IList<T> FindByQuery(string query, string[] parameters, object[] values) public IList<T> FindByNamedQuery(string query) public IList<T> FindByNamedQuery(string query, string[] parameters, object[] values) public IList FindObjectsByQuery(string query) public IList FindObjectsByNamedQuery(string query) public IList FindObjectsByNamedQuery(string query, string[] parameteres, object[] values) public IList FindObjectsBySQLQuery(string query, string[] parameters, object[] values) public T Save(T entity) public T Update(T entity) public void Delete(T entity) public Id GetMax(string propertyName) |
NHBussinessFactory:
Esta clase hereda de la clase BussinessFactory, que es la clase abstracta que provee los metodos abstractos que nos retornan de objetos de nuestras entidades de negocios
using NHBussines.Implementations; |
BussinessFactory
using System; namespace NHBussines |
Nuestros Objetos de Negocios: Para nuestro Ejemplo User, UserEntity
Interfaz: IUserController
using NHEntity; namespace NHBussines.Interfaces } |
Clase de Negocio: UserController:
using NHBussines.Interfaces; namespace NHBussines.Implementations |
Así nuestra Factoria de Objetos de Negocios, funciona con el intellisense de Visual Studio:
Asi Accedemos a los metodos comunes de nuestra entidad:
Espero les haya ayudado con este aporte.
Muchas Gracias.
| Post Similares: |
| [1] Aplicando Patrones de Diseño a una aplicacion que utiliza NH [2] Persistencia en .NET |

0 post:
Publicar un comentario en la entrada