Manejo de sesiones y transacciones N/Hibernate en DDD

331 views
Skip to first unread message

tolemaC

unread,
Dec 21, 2010, 8:36:13 AM12/21/10
to DDD-es
Hola de nuevo gente.

En mi aplicación manejo las sesiones desde el controlador de la vista,
tengo una sesión por controlador.
Hasta ahora había mantenido las referencias a NHibernate a raya en la
capa de infraestructura, pero ahora en el controlador necesito tener
la sesión de NHibernate y hacer Bind al CurrentSessionContext en cada
acción.

Esto me obliga a referenciar a NHibernate en mi capa de presentación,
por lo tanto se me crea una dependencia y esto no me gusta.

He pensado en crearme una interface para el manejo de sesiones de
acceso a datos e implementarla en una clase en la capa de
infraestructura, lo que no se es donde poner esta interface, no tengo
claro si ponerla en la capa de aplicación o junto a los controladores.

Ideas?

Igual me pasa con las transacciones. Las manejo en la capa de
aplicación y por lo tanto tendría que hacerla depender de NHibernate.

Mi deducción es que lo correcto sería crear una interface de manejo de
sesiones y transacciones en la capa de aplicación y usarla desde los
controladores.
Pero me huelo que no es así, he estado mirando NDDDSample y no he
visto nada parecido. Quizá se me haya escapado.

Saludos,

nelopa...@gmail.com

unread,
Dec 21, 2010, 8:57:30 AM12/21/10
to ddd...@googlegroups.com
AOP para tu controlador.

2010/12/21 tolemaC <tol...@gmail.com>:

> --
> Has recibido este mensaje porque estás suscrito al grupo "DDD-es" de Grupos de Google.
> Para publicar una entrada en este grupo, envía un correo electrónico a ddd...@googlegroups.com.
> Para anular tu suscripción a este grupo, envía un correo electrónico a ddd-es+un...@googlegroups.com
> Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/ddd-es?hl=es.
>
>

tolemaC

unread,
Dec 21, 2010, 9:04:00 AM12/21/10
to DDD-es
hmn! no te entiendo.

El como lo aplique es lo de menos, la cosa es donde creo la
dependencia.
...

On 21 dic, 14:57, "nelopause...@gmail.com" <nelopause...@gmail.com>
wrote:
> AOP para tu controlador.
>
> 2010/12/21 tolemaC <tole...@gmail.com>:

nelopa...@gmail.com

unread,
Dec 21, 2010, 9:07:26 AM12/21/10
to ddd...@googlegroups.com
En el proyecto que mas te guste o que ya tengas las dependencias a nh
o uno nuevo. por ejemplo:

Infraestructura.NHibernate

nelo


2010/12/21 tolemaC <tol...@gmail.com>:

Carlos Peix

unread,
Dec 21, 2010, 11:07:29 AM12/21/10
to ddd-es
Hola,

Aunque no mencionas en que plataforma estas, supongo que por el hecho de mencionar NHibernate y "accion" estas en ASP.NET MVC.

Si ese es el caso, por favor hecha un vistazo a la implementacion que uso (y de la cual ya he hablado en la lista de AltNET Hispano):

En primer lugar, utilizo este filtro que, por supuesto, tiene referencia a NHIbernate:


Luego lo configuro como un filtro global, esto seguro puede hacerse en MVC 3, no estoy seguro en MVC 2. Se hace mas o menos asi (en el Global.asax.cs):
GlobalFilters.Filters.Add(_container.Resolve<SessionPerActionAttribute>());
Lo del container tiene que ver con la inyeccion de la ISessionFactory al mismo atributo. Podes ver la inicializacion completa en estas dos clases:

y

Si no me equivoco, esta es la opcion mas sencilla posible (con menos "piezas moviles") para el manejo de sesion de NH utilizando un container de IoC.

De esta manera no quedan referencias a NH en los controllers, como puedes ver aqui:


Por supuesto estoy a disposicion por dudas o comentarios.

----------------------------------
Carlos Peix

2010/12/21 tolemaC <tol...@gmail.com>

tolemaC

unread,
Dec 21, 2010, 1:04:15 PM12/21/10
to DDD-es
Nelo, me queda claro.

Lo pensé al salir del trabajo, cuando iba en el coche y ya no podía
responder.

Carlos me miraré esos enlaces.

Muchas gracias,

PD: En concreto el dominio que estoy construyendo es para una
aplicación Winform, pero me gustaría que en un futuro fuera en web.


On 21 dic, 15:07, "nelopause...@gmail.com" <nelopause...@gmail.com>
wrote:
> En el proyecto que mas te guste o que ya tengas las dependencias a nh
> o uno nuevo. por ejemplo:
>
> Infraestructura.NHibernate
>
> nelo
>
> 2010/12/21 tolemaC <tole...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages