Yo leí todo el thread y leí lo de 10k de objetos, siempre pensé que hablabas
de una aplicación desktop.
Para una página web esta mal.
Deberias buscar otra forma, aunque no muestres 10mil, entidades, con el solo
hecho de cargarlas en memoria vas a tener problemas.
Podes paginar, si estas usando extjs en asp.net te recomiendo Coolite, si lo
estas usando en asp.net mvc, mira mi helper:
http://jfromaniello.blogspot.com/2009/05/extjs-grid-helper-some-samples.html

(ojo, mi código no se puede usar ni en ejemplos open source, ni en
apliaciones comerciales, por conflictos de licencia con coolite).

<http://jfromaniello.blogspot.com/2009/05/extjs-grid-helper-some-samples.html>

El 5 de enero de 2010 13:47, Felipe <[email protected]> escribió:

> 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
>
-- 
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