Carlos, siempre oportunas tus preguntas.

Esperemos las mediciones de Jose, pero hasta donde yo recuerdo el
Merge vuelve a levantar el objeto de la base de datos e intenta
combinar los valores de las propiedades, acción que es necesaria si
uno modifica los objetos que están desconectados.

Si es por motivos de solo lectura (como para armar un árbol), no tiene
sentido el Merge y quizás tampoco quedarse con todo el objeto de
dominio en session. En este caso creo que sería mejor armar un
servicio que tenga una cache para que cuando no lo encuentre se lo
pida a nh y guardar DTOs con la información que necesitamos del
objeto, una implementación de es cache sería en session de asp.net.

saludos.
nelo

2012/9/19 Carlos Peix <[email protected]>:
> Hola Jose,
>
> Mencionas razones de performance que te llevan a guardar el objeto en
> variable de sesion el lugar del Id. Que tipo de problemas tienes al
> recuperar un objeto por Id? has hecho mediciones comparando esa operacion
> con el merge? que tipo de cifras te dan esas mediciones?
>
> Pregunto esto porque me extraña que tengas estos problemas, pero reconozco
> que no se los detalles de tu caso.
>
> ----------------------------------
> Carlos Peix
>
> 2012/9/18 José Juniors Rocaspana <[email protected]>
>>
>> Buen día a todos, estamos teniendo problemas al intentar recuperar un set
>> de 3er orden en lazy load luego de haber quitado y vuelto a agregar la
>> sesión de NH del objeto padre.
>> Ejemplifico para mejor comprensión:
>> - Objecto A y Objecto B son entidades de nuestra DB.
>> - Objecto A tiene una many-to-one a Objecto B.
>> - Objecto B tiene un set de Objectos C en lazy.
>>
>> Por cuestiones de performance estamos guardando a Objecto A en una
>> variable de sesión web, y al momento de reutilizarla la volvemos a meter en
>> la sesión de NH actual mediante Merge(). Luego del Merge(), podemos acceder
>> a todas las propiedades de Objeto A y B pero no a los sets mapeados en B. Es
>> muy raro porque sin hacer el Merge() el código explota ni bien queremos
>> acceder a cualquier propiedad de la entidad siendo no necesariamente una
>> colección.
>>
>> Si en lugar de hacer un Merge() hago un Get() del objeto A (lo vuelvo a
>> buscar a la BD), todo funciona de 1000 maravillas.. Alguien puede decirme
>> dónde le estamos errando? O arrojar un poco de luz sobre mi camino?
>>
>> Muchas gracias por leer! Saludos!
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a