atom feed7 messages in com.googlegroups.nhibernate-hispano[NHibernate-Hispano] Re: Session en l...
FromSent OnAttachments
García Máximo JesúsApr 28, 2009 3:18 am 
Gustavo RingelApr 28, 2009 5:14 am 
Leandro de los SantosApr 28, 2009 6:13 am 
Fabio MauloApr 28, 2009 6:40 am 
Germán SchuagerApr 28, 2009 6:46 am 
Francisco A. LozanoApr 28, 2009 6:48 am 
García Máximo JesúsApr 29, 2009 3:19 am 
Subject:[NHibernate-Hispano] Re: Session en la capa de presentación.
From:Fabio Maulo (fabi@gmail.com)
Date:Apr 28, 2009 6:40:24 am
List:com.googlegroups.nhibernate-hispano

Leandro, hay que tener cuidado con lo que se define "servicios". Hay veces que con esa palabra se entienden cosas completamente distintas. Trabajar siempre con DTO tiene sus costos y no siempre vale la pena pagar esos costos. Por ejemplo... La capa de presentación recibe instancias de clases, mejor si la recibe tras de una interface (un contrato); que sabe la capa de presentación si eso que recibe es un DTO o es otra cosa ? No se si me explico... para que mandarle un DTO desconectado cuando el DTO me representa la entidad 1a1 ?

La capa de presentación va a trabajar con lo que necesite el UseCase que te definió quien necesita la applicación, esto es lo unico que es seguro. Quien programa la capa de presentación ? es amigo tuyo ? si es amigo tuyo de que tenes que protejerte ?

Cosa distinta es cuando se habla de servicios a applicaciones externas; en ese caso SI mandale DTOs desconectados y siempre definiendo un contrato (una interface). pero, una vez mas, vos le mandas una instancia de algo que puede ser serializado y que seguro está desconectado de tu applicación, que eso sea la misma entidad que usas para grabar, o no, depende del contrato que tengas con esa applicacción externa y una vez mas es affar tuyo.

A mi el "fundamentalismo" en software me gusta muy poco.

El 28 de abril de 2009 10:13, Leandro de los Santos < delo@gmail.com> escribió:

Igualmente, sobre tu pregunta, siendo qué tenes una capa de servicios, lo qué siempre lei (en esta lista inclusive) es qué lo recomendado seria que tus servicios devuelvan DTO, o sea un objeto con la información que vas a mostrar en la grilla.

De esta forma tu grilla no conoce la clase, sino una estructura de datos que devuelve el servicio, dejando tu modelo de aplicación oculto a la capa de presentación, siendo el nexo los servicios y las interfaces de los mismos, la ventaja es qué tu servicio abre, hace lo que tiene que hacer (por ejemplo llenar la clase que vas a usar en la grilla) y luego cierra, lo que significa que la sesión de NHibernate la manejas en los servicios.

El día 28 de abril de 2009 9:14, Gustavo Ringel <gust@gmail.com> escribió:

El tema es definitivamente para alguna lista del MUG. No solo Lazy es tu problema ahi. De todos modos mira el ejemplo en uNHAddins que trabaja con NH y winforms y ahi ves como podes hacer bind a una grilla y la estrategia para evitar esos problemas.

Una correccion, lo que vas a hacer es un buen diseño orientado a objetos basado en un ejemplo que viste de Angel. DDD implica tener el experto en la aplicacion como parte del grupo y asesorarse a lo largo de el, establecer un lenguaje unico con el experto de modo de que la aplicacion refleje en lo mas posible la realidad...

Armar un codigo correcto, bien organizado, usando patrones de diseño adecuados, etc, es algo que se hacia mucho antes de que existiera el concepto de DDD.

2009/4/28 García Máximo Jesús <garc@gmail.com>

Hola a todos, no se si éste es el lugar para hace esta pregunta o alguna lista de arquiectura como la del MUG por ejemplo, en principio hago la pregunta aca y pido disculpas si no era el lugar. Estoy intentando arrancar con una nueva aplicación y quería uilizar los conceptos de modelo de dominio DDD y nhiberbate como persistencia. El modelo aproximado elegido hasta el momento es algo basado en el ejemplo mostrado por Angel Lopez llamado DDD Consorcios pero esto no creo que tenga incidencia en el contexto especialmente porque mi aplicación es windws y no web. Mi pregunta es la siguiente: Si yo tengo un objeto del dominio que sea como ejemplo un producto que tiene una categoría, Producto tendrá una propiedad que devolverá un objeto categoría (relacion en la base y nh lo mapearía correspondientemente con el atributo Lazy en true). Si yo en mi capa de presentación por ejemplo en una grilla quiero mostrar una lista de productos y que la grilla muestre el nombre de la categoría de cada producto tengo que mostrar en la grilla la propiedad Producto.Categoría.Descripcion el problema es que yo la session la abro y cierro desde mi capa de servicios y en la capa de presentación está cerrada por lo que nhibernate me da un error al querer acceder a la propiedad lazy. Debería yo abrir y cerrar la session desde mi capa de presentación? o debería no poner atributos lazy en mis colecciones? Hay ejemplos de alguien al respecto para poder investigar?

Mil gracias de antemano por esta y todas las respuesta que diariamente he comenzado a leer desde que me incluí en este grupo hacer ya unos días.

--~--~---------~--~----~------------~-------~--~----~ Para escribir al Grupo, hágalo a esta dirección:
NHib@googlegroups.com Para más, visite: http://groups.google.com/group/NHibernate-Hispano -~----------~----~----~----~------~----~------~--~---