Agradezco desde ya todos sus aportes, y estoy de acuerdo con que el
rediseño es una buena alternativa.

Creo que en este caso particular (y a esta altura, ya que el tiempo
apremia) no queda mucha alternativa.
Actualmente estoy usando ExtJS con su Grid, y la extensión
desarrollada como aporte para tener un HierarchyGrid. No es una grilla
común, y los tiempos de respuesta, más las operaciones (sumas y
validaciones principalmente), deben ser rápidas. El usuario viene de
trabajar mucho con el mundo Excel   :(

Ahora respecto al escenario actual me sorprendió ver que al hacer un
Profiling, haciendo un uso adecuado de fetching, los tiempos de carga
como los de cierre de la Sesión se incrementan enormemente. La
consulta directo a SQL Server toma menos de 1 seg. Si materializo los
objetos toma cerca de 9 seg. Es por esto que pensaba en usar algo como
"non-managed entities", de hecho la idea de IStatelessSession la probé
y no noté mejora alguna. Puede que esté haciendo algo mal respecto a
esto último.

No obstante yo creo que la pregunta se centra en si existe una
alternativa para materializar estos objetos de manera que no queden
asociados a la Sesión ("non-managed entities") usando las mismas
clases mapeadas, asumiendo que si existe esta alternativa, sería más
eficiente que recuperar las entidades del modo habitual.

Estuve indagando en el mundo de los IResultTransformers y el manejo de
Cache, pero no llegué a buen puerto por ese lado.

Bueno dejo abierto el tema por si hay alguna otra idea más abajo
nivel. Por el momento tendré que mantenerme con mi "gran" DTO.

On 5 ene, 10:12, Juan <[email protected]> wrote:
> Si estas haciendo la transformacion de entidades a dtos, en esencia
> estas obteniendo un result rest. Puede que te convenga tener una vista
> en la base de datos y hacer el query directo ahi.
>
> 10000 objectos? necesitas desplegarlos todos al mismo tiempo? podrias
> reducir la cantidad, capaz, con paging.
>
> Si tu modelo lo amerita, no veo objeciones el porque no podas utilizar
> las entidades en lugar de los dto en tu grilla. A no ser que tengas
> una capa en medio del cliente y el service, algo tipo wcf... en ese
> caso, siemre podes lograrlo siempre y cuando tus intenciones no sean
> de hacer mano de lazy loading...
>
> On Jan 4, 10:54 am, Felipe <[email protected]> wrote:
>
>
>
> > Necesito desplegar una grilla, la cual actualmente estoy transformando
> > de un grafo de objetos persistentes a DTOs.
> > Lamentablemente el rendimiento es muy bajo, ya que cada celda de la
> > grilla es una instancia, e incluso se combina una fila con celdas que
> > provienen de otros objetos persistentes. Dado lo anterior hay que
> > hacer un manejo importante a nivel de DTO, por lo cual armo algunos
> > Dictionary para mejorar la eficiencia y además dado que la grilla es
> > jerárquica.
>
> > Probé utilizando el comando "select new ClaseDTO(parametros)" para ver
> > la mejora de rendimiento, y es notoria. Actualmente estoy recuperando
> > cerca de 10.000 objetos, y esto afecta no sólo la recuperación, sino
> > también el cierre de la Sesión.
>
> > El problema es que dado que la estructura es compleja, el constructor
> > de la ClaseDTO es enorme, y quería ver si existía alguna alternativa
> > de que NHibernate me devolviera el grafo de objetos sin ningún tipo de
> > control (persistence manager), de este modo usa las entidades como
> > DTOs o Bean transientes o "detached" y debiera disminuir el tiempo de
> > carga.
>
> > La pregunta obvia es, ¿Es esto posible?, ¿mejoraría el rendimiento?
>
> > Gracias,
-- 
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