Argons | 1 Feb 15:34
Picon

[NHibernate-Hispano] Re: Eager load de un árbol

Pues no es estático ya que tengo que sacar el menú de los roles
asociados al usuario.

--

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

Leandro | 3 Feb 05:39
Picon

Re: Re: Recuperar entidades como objetos transientes o "detached". Es posible?. Mejora el Rendimiento?

Felipe, buscarìa mas el conflicto por el lado del JsonStore de JS que por el lado de NH. Tenes identificado donde tenes el cuello de botella?
Saludos
Leandro

2010/1/7 Juan Cuello <juan.cuellor <at> gmail.com>
Hola,

Yo he tenido que programar una grilla para paginar 5000 elementos. Si
realizas las consultas con paginación, me funciona como un rayo.

Algo así como:

       protected IList<T> GetPageList<TKey>(string filter, TKey key,
string orderProperty, int firstResult, int maxResults)
       {
           string hQuery = string.Format("from c in {0} where c.{1}
= :parameter order by c.{2}", persitentType.Name, filter,
orderProperty);
           IQuery query = NHibernateSession.CreateQuery(hQuery);
           query.SetParameter<TKey>("parameter", key);
           if (firstResult > -1) query.SetFirstResult(firstResult);
           if (maxResults > -1) query.SetMaxResults(maxResults);
           return query.List<T>();
       }

Principalmente usando SetFirstResult y SetMaxResults (esta función del
ejemplo es una genérica de una app mía). Y si te va lentito, siempre
puedes agregar un índice en la bbdd por el campo de filtro (si existe
dicho filtro).

Ya te digo que con listas de 5000 elementos tengo tiempos de respuesta
en la web inferiores a 1 segundo (con rendering incluido).

Por las pruebas, parece que el tiempo de respuesta se mantiene
constante aunque incrementes el número de elementos, ya que
simplemente incrementas el número de páginas, no se resultados de una
consulta.


On 6 ene, 05:28, Juan <juan.gree... <at> gmail.com> wrote:
> Por desgracia no me dan comision por la propaganda, pero si estas
> haciendo profiling puede que te venga bien (si no lo has hecho ya),
> darle una ojeada a nhprof (http://nhprof.com/). Deberia darte una idea
> de por donde anda tu problema, si es efectivamente el cache, la
> sesion, etc.
>
> On Jan 4, 10:54 am, Felipe <felipe.mar... <at> gmail.com> 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: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
Edgar Ramos | 5 Feb 20:06
Picon

sql-query

En este ejemplo de nhforge

    <sql-query name="PeopleByName">
    	<return alias="person"
    					class="Person"/>
    	SELECT {person.*}
    	FROM People {person} WITH(nolock)
    	WHERE {person}.Name LIKE :name
    </sql-query>

Hay un select que retorna un conjunto de resultados y por otro lado
existe la clase Person, esto se debe hacer siempre ?, me explico

por cada  sql-query, que retorne un conjunto posible de resultados,
siempre tendre una clase acompañandole ?

saludos y gracias por cualquier comentario

--

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

jancic | 5 Feb 20:17
Picon
Gravatar

Re: sql-query

No... podes evitar tener esa clase, usar <return-scalar...> en cambio de <return..>, despues eso lo leer como un List<object[]> (donde cada object es una propiedad devuelta)

On Feb 5, 2010 4:06pm, Edgar Ramos <eramosecua <at> gmail.com> wrote:
> En este ejemplo de nhforge
>
>
>
>    
>
>        
>                                        class="Person"/>
>
>        SELECT {person.*}
>
>        FROM People {person} WITH(nolock)
>
>        WHERE {person}.Name LIKE :name
>
>    
>
>
>
> Hay un select que retorna un conjunto de resultados y por otro lado
>
> existe la clase Person, esto se debe hacer siempre ?, me explico
>
>
>
> por cada  sql-query, que retorne un conjunto posible de resultados,
>
> siempre tendre una clase acompañandole ?
>
>
>
> saludos y gracias por cualquier comentario
>
>
>
> --
>
> Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
>
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
Fabio Maulo | 5 Feb 20:32
Picon
Gravatar

Re: sql-query

a mi esas SQL así en seco que pueden ser escritas con HQL no me gustan para nada...

Si no tiene nada de particular especifico de un RDBMS y/o tampoco se trata de una optimización de la query que genera NH no veo ningun motivo para usar SQL.
Si estas de apuro ok... pero despues dedicale unos 15 minutos a ver como hacerla en HQL.

El 5 de febrero de 2010 16:06, Edgar Ramos <eramosecua <at> gmail.com> escribió:
En este ejemplo de nhforge

   <sql-query name="PeopleByName">
       <return alias="person"
                                       class="Person"/>
       SELECT {person.*}
       FROM People {person} WITH(nolock)
       WHERE {person}.Name LIKE :name
   </sql-query>

Hay un select que retorna un conjunto de resultados y por otro lado
existe la clase Person, esto se debe hacer siempre ?, me explico

por cada  sql-query, que retorne un conjunto posible de resultados,
siempre tendre una clase acompañandole ?

saludos y gracias por cualquier comentario

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



--
Fabio Maulo

--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
Edgar Ramos | 5 Feb 20:45
Picon

Re: sql-query

Esto aplicaria tambien con stored procedures que devuelven conuunto de datos ?

gracias por el aporte

El día 5 de febrero de 2010 14:17,  <jancic <at> gmail.com> escribió:
> No... podes evitar tener esa clase, usar <return-scalar...> en cambio de
> <return..>, despues eso lo leer como un List<object[]> (donde cada object es
> una propiedad devuelta)
>
> On Feb 5, 2010 4:06pm, Edgar Ramos <eramosecua <at> gmail.com> wrote:
>> En este ejemplo de nhforge
>>
>>
>>
>>
>>
>>
>>                                        class="Person"/>
>>
>>        SELECT {person.*}
>>
>>        FROM People {person} WITH(nolock)
>>
>>        WHERE {person}.Name LIKE :name
>>
>>
>>
>>
>>
>> Hay un select que retorna un conjunto de resultados y por otro lado
>>
>> existe la clase Person, esto se debe hacer siempre ?, me explico
>>
>>
>>
>> por cada  sql-query, que retorne un conjunto posible de resultados,
>>
>> siempre tendre una clase acompañandole ?
>>
>>
>>
>> saludos y gracias por cualquier comentario
>>
>>
>>
>> --
>>
>> Para escribir al Grupo, hágalo a esta dirección:
>> NHibernate-Hispano <at> googlegroups.com
>>
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> NHibernate-Hispano <at> googlegroups.com
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

--

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

Fabio Maulo | 5 Feb 20:59
Picon
Gravatar

Re: sql-query

A no!! eso me gustá aún menos.

El 5 de febrero de 2010 16:45, Edgar Ramos <eramosecua <at> gmail.com> escribió:
Esto aplicaria tambien con stored procedures que devuelven conuunto de datos ?

gracias por el aporte

El día 5 de febrero de 2010 14:17,  <jancic <at> gmail.com> escribió:
> No... podes evitar tener esa clase, usar <return-scalar...> en cambio de
> <return..>, despues eso lo leer como un List<object[]> (donde cada object es
> una propiedad devuelta)
>
> On Feb 5, 2010 4:06pm, Edgar Ramos <eramosecua <at> gmail.com> wrote:
>> En este ejemplo de nhforge
>>
>>
>>
>>
>>
>>
>>                                        class="Person"/>
>>
>>        SELECT {person.*}
>>
>>        FROM People {person} WITH(nolock)
>>
>>        WHERE {person}.Name LIKE :name
>>
>>
>>
>>
>>
>> Hay un select que retorna un conjunto de resultados y por otro lado
>>
>> existe la clase Person, esto se debe hacer siempre ?, me explico
>>
>>
>>
>> por cada  sql-query, que retorne un conjunto posible de resultados,
>>
>> siempre tendre una clase acompañandole ?
>>
>>
>>
>> saludos y gracias por cualquier comentario
>>
>>
>>
>> --
>>
>> Para escribir al Grupo, hágalo a esta dirección:
>> NHibernate-Hispano <at> googlegroups.com
>>
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> NHibernate-Hispano <at> googlegroups.com
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

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



--
Fabio Maulo

--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
Edgar Ramos | 5 Feb 21:19
Picon

Re: sql-query

Tranquilo Fabio, es unicamente por saber, y si se presenta el caso de
requerir sera unica y exclusivamente utilizado para reportes con
crystal Report

Espero esta haciendo bien las cosas

El día 5 de febrero de 2010 14:59, Fabio Maulo <fabiomaulo <at> gmail.com> escribió:
> A no!! eso me gustá aún menos.
>
> El 5 de febrero de 2010 16:45, Edgar Ramos <eramosecua <at> gmail.com> escribió:
>>
>> Esto aplicaria tambien con stored procedures que devuelven conuunto de
>> datos ?
>>
>> gracias por el aporte
>>
>> El día 5 de febrero de 2010 14:17,  <jancic <at> gmail.com> escribió:
>> > No... podes evitar tener esa clase, usar <return-scalar...> en cambio de
>> > <return..>, despues eso lo leer como un List<object[]> (donde cada
>> > object es
>> > una propiedad devuelta)
>> >
>> > On Feb 5, 2010 4:06pm, Edgar Ramos <eramosecua <at> gmail.com> wrote:
>> >> En este ejemplo de nhforge
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>                                        class="Person"/>
>> >>
>> >>        SELECT {person.*}
>> >>
>> >>        FROM People {person} WITH(nolock)
>> >>
>> >>        WHERE {person}.Name LIKE :name
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> Hay un select que retorna un conjunto de resultados y por otro lado
>> >>
>> >> existe la clase Person, esto se debe hacer siempre ?, me explico
>> >>
>> >>
>> >>
>> >> por cada  sql-query, que retorne un conjunto posible de resultados,
>> >>
>> >> siempre tendre una clase acompañandole ?
>> >>
>> >>
>> >>
>> >> saludos y gracias por cualquier comentario
>> >>
>> >>
>> >>
>> >> --
>> >>
>> >> Para escribir al Grupo, hágalo a esta dirección:
>> >> NHibernate-Hispano <at> googlegroups.com
>> >>
>> >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>> >
>> > --
>> > Para escribir al Grupo, hágalo a esta dirección:
>> > NHibernate-Hispano <at> googlegroups.com
>> > Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> NHibernate-Hispano <at> googlegroups.com
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
> --
> Fabio Maulo
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> NHibernate-Hispano <at> googlegroups.com
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

--

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

Fabio Maulo | 5 Feb 21:48
Picon
Gravatar

Re: sql-query

Mirá... CrystalReport o no un SP es una SP con sus beneficios y sus defectos.

Peor me sentiría si por casualidad se te ocurre duplicar logica de negocio adentro una SP solo para sacar un reporte.

Sea con Crystal que con ReportingServices o vas directo a DB con SQL planas sin pasar por NH o vas a dominio... y mirá vos que tengo duda sobre lo primero...
Justo el otro dia estabamos hablando de eso con Mario Fernandez; allí tenemos ReportingService algunos a dominio (y se aprovecha toda la logica necesaria) y otros derecho a DB y la preguntas son:
1) donde están los tests de esas SQL megagalacticas ?
2) quien va a entender/mantener esas bestias una vez que cambies de trabajo ?
3) si ya tenes todo para interrogar a travez del dominio para que pasar por el costado ?

Esas preguntas hay que hacersela report por report, darle un puntaje a cada posible respuesta,  y tomar la decisión apropiada.

El 5 de febrero de 2010 17:19, Edgar Ramos <eramosecua <at> gmail.com> escribió:
Tranquilo Fabio, es unicamente por saber, y si se presenta el caso de
requerir sera unica y exclusivamente utilizado para reportes con
crystal Report

Espero esta haciendo bien las cosas

El día 5 de febrero de 2010 14:59, Fabio Maulo <fabiomaulo <at> gmail.com> escribió:
> A no!! eso me gustá aún menos.
>
> El 5 de febrero de 2010 16:45, Edgar Ramos <eramosecua <at> gmail.com> escribió:
>>
>> Esto aplicaria tambien con stored procedures que devuelven conuunto de
>> datos ?
>>
>> gracias por el aporte
>>
>> El día 5 de febrero de 2010 14:17,  <jancic <at> gmail.com> escribió:
>> > No... podes evitar tener esa clase, usar <return-scalar...> en cambio de
>> > <return..>, despues eso lo leer como un List<object[]> (donde cada
>> > object es
>> > una propiedad devuelta)
>> >
>> > On Feb 5, 2010 4:06pm, Edgar Ramos <eramosecua <at> gmail.com> wrote:
>> >> En este ejemplo de nhforge
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>                                        class="Person"/>
>> >>
>> >>        SELECT {person.*}
>> >>
>> >>        FROM People {person} WITH(nolock)
>> >>
>> >>        WHERE {person}.Name LIKE :name
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> Hay un select que retorna un conjunto de resultados y por otro lado
>> >>
>> >> existe la clase Person, esto se debe hacer siempre ?, me explico
>> >>
>> >>
>> >>
>> >> por cada  sql-query, que retorne un conjunto posible de resultados,
>> >>
>> >> siempre tendre una clase acompañandole ?
>> >>
>> >>
>> >>
>> >> saludos y gracias por cualquier comentario
>> >>
>> >>
>> >>
>> >> --
>> >>
>> >> Para escribir al Grupo, hágalo a esta dirección:
>> >> NHibernate-Hispano <at> googlegroups.com
>> >>
>> >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>> >
>> > --
>> > Para escribir al Grupo, hágalo a esta dirección:
>> > NHibernate-Hispano <at> googlegroups.com
>> > Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> NHibernate-Hispano <at> googlegroups.com
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
> --
> Fabio Maulo
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> NHibernate-Hispano <at> googlegroups.com
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

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



--
Fabio Maulo

--
Para escribir al Grupo, hágalo a esta dirección: NHibernate-Hispano <at> googlegroups.com
Para más, visite: http://groups.google.com/group/NHibernate-Hispano
Gustavo Ringel | 5 Feb 22:06
Picon
Gravatar

Re: sql-query

Y digamos que pagando un poco podes usar una set de controles como la de DevExpress y tenes para hacer reportes usando reglas de dominio / caching, etc y el control final que mostrar al usuario le permite cortar por cosas que ni sueña todavia.

En Reporting Services y Cristal para hacer la mitad tenes que pagar el triple y a costo de tener que escribir muchas cosas en SPs que es un costo gravisimo ya que en el momento que vas cambiando la base, en NH por lo menos te fallan tests, en SPs metes la pata...y quien te salva? y como haces si tenes que volver a la misma consulta que hace dos versiones?

Bue, podria seguir, en mi caso hace un tiempo hice un sistema de reportes no pequeño en reporting services, y ahora nos cambio un poco el dominio...cambiar en el sistema hecho en reporting services es por decirlo en lenguaje apto para todo publico, una patada en los h...

Mientras que los reportes adentro de la aplicacion que teniamos en NH...cambiaron automaticamente, salvo agregar o quitar columnas...nada mas (sin tests al GUI porque al menos a mi me parecen exagerados)

En definitiva, luego de que convenci a mi jefe de que Reporting Services era lo mas...estoy viendo como explicarle la mala decision.

Gustaov.

2010/2/5 Fabio Maulo <fabiomaulo <at> gmail.com>
Mirá... CrystalReport o no un SP es una SP con sus beneficios y sus defectos.
Peor me sentiría si por casualidad se te ocurre duplicar logica de negocio adentro una SP solo para sacar un reporte.

Sea con Crystal que con ReportingServices o vas directo a DB con SQL planas sin pasar por NH o vas a dominio... y mirá vos que tengo duda sobre lo primero...
Justo el otro dia estabamos hablando de eso con Mario Fernandez; allí tenemos ReportingService algunos a dominio (y se aprovecha toda la logica necesaria) y otros derecho a DB y la preguntas son:
1) donde están los tests de esas SQL megagalacticas ?
2) quien va a entender/mantener esas bestias una vez que cambies de trabajo ?
3) si ya tenes todo para interrogar a travez del dominio para que pasar por el costado ?

Esas preguntas hay que hacersela report por report, darle un puntaje a cada posible respuesta,  y tomar la decisión apropiada.

El 5 de febrero de 2010 17:19, Edgar Ramos <eramosecua <at> gmail.com> escribió:

Tranquilo Fabio, es unicamente por saber, y si se presenta el caso de
requerir sera unica y exclusivamente utilizado para reportes con
crystal Report

Espero esta haciendo bien las cosas

El día 5 de febrero de 2010 14:59, Fabio Maulo <fabiomaulo <at> gmail.com> escribió:
> A no!! eso me gustá aún menos.
>
> El 5 de febrero de 2010 16:45, Edgar Ramos <eramosecua <at> gmail.com> escribió:
>>
>> Esto aplicaria tambien con stored procedures que devuelven conuunto de
>> datos ?
>>
>> gracias por el aporte
>>
>> El día 5 de febrero de 2010 14:17,  <jancic <at> gmail.com> escribió:
>> > No... podes evitar tener esa clase, usar <return-scalar...> en cambio de
>> > <return..>, despues eso lo leer como un List<object[]> (donde cada
>> > object es
>> > una propiedad devuelta)
>> >
>> > On Feb 5, 2010 4:06pm, Edgar Ramos <eramosecua <at> gmail.com> wrote:
>> >> En este ejemplo de nhforge
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>
>> >>                                        class="Person"/>
>> >>
>> >>        SELECT {person.*}
>> >>
>> >>        FROM People {person} WITH(nolock)
>> >>
>> >>        WHERE {person}.Name LIKE :name
>> >>
>> >>
>> >>
>> >>
>> >>
>> >> Hay un select que retorna un conjunto de resultados y por otro lado
>> >>
>> >> existe la clase Person, esto se debe hacer siempre ?, me explico
>> >>
>> >>
>> >>
>> >> por cada  sql-query, que retorne un conjunto posible de resultados,
>> >>
>> >> siempre tendre una clase acompañandole ?
>> >>
>> >>
>> >>
>> >> saludos y gracias por cualquier comentario
>> >>
>> >>
>> >>
>> >> --
>> >>
>> >> Para escribir al Grupo, hágalo a esta dirección:
>> >> NHibernate-Hispano <at> googlegroups.com
>> >>
>> >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>> >
>> > --
>> > Para escribir al Grupo, hágalo a esta dirección:
>> > NHibernate-Hispano <at> googlegroups.com
>> > Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>> --
>> Para escribir al Grupo, hágalo a esta dirección:
>> NHibernate-Hispano <at> googlegroups.com
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>
>
> --
> Fabio Maulo
>
> --
> Para escribir al Grupo, hágalo a esta dirección:
> NHibernate-Hispano <at> googlegroups.com
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano

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



--
Fabio Maulo

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

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

Gmane