solo para recordarles que esos "join fetch" funciona si las collection son
<set>

El 14 de diciembre de 2009 11:26, José F. Romaniello <[email protected]
> escribió:

> Un ejemplo sería :
>
> Invoice que tiene las propiedades Customer, Payment, Contact. Las tres son
> LazyLoad y eso esta bien, pero para esa consulta que tenes que mostrar ese
> dato calculado que depende de los tres, y ahi tenemos un problema.
>
> Entonces como hacemos?
>
> from Invoice i
> inner join fetch i.Customer
> inner join fetch i.Payment
> inner join fetch i.Contact
>
> 3 inner join fetch es un poco mucho.... Pero.
>
> Si en todo tu sistema, por todos lados tenes que mostrar esa propiedad
> calculada, evaluaría hacerlo de otra forma. Pero vos dijiste que era para
> mostrar en una grilla paginado solamente.
>
> Saludos
>
>
> El 14 de diciembre de 2009 11:15, Carlos Peix <[email protected]>escribió:
>
> Hola Juan,
>>
>> Por que 300 consultas a la base de datos? si tenes tres colecciones hijas
>> deberias tener 3 consultas que devuelven 100 elementos cada una (a menos que
>> me equivoque por mucho)
>>
>> La primera recomendacion seria no realizar optimizaciones (como la carga
>> "eager" de las colecciones) hasta que no se compruebe que es necesario.
>>
>> Como siempre, NH no hace magia y si es necesario que tengas un cache de la
>> suma en la entidad padre, pues tendras que hacerlo de la misma manera y
>> persistirlo. Esta opcion deberias usarla en caso extremo ya que implica
>> almacenamiento redundante de informacion, aunque con un buen diseño de los
>> objetos, no deberia ser muy riesgoso.
>>
>> ----------------------------------
>> Carlos Peix
>>
>> 2009/12/14 Juan Cuello <[email protected]>
>>
>> Muchas gracias a ambos. Lo de paginación lo tengo solucionado gracias
>>> a vuestras instrucciones. Uso Oracle 10g.
>>>
>>> El problema de propiedades calculadas es que los programadores, para
>>> obtener dicho valor, accedían a las subentidades (carga lazy)
>>> provocando que, en una lista de 100 elementos, que se accede a 3
>>> subentidades por elemento, hablamos de 300 consultas a base de
>>> datos...malo malo.
>>>
>>> La idea era especificar la select de carga de dicha entidad haciendo
>>> los joins que corresponden y mapeando esos valores, de forma que al
>>> cargar la lista, directamente tendría los valores calculados en esas
>>> propiedades y me ahorraba accesos a bbdd. Pondría estas propiedades en
>>> insert="false" update="false" y listo...
>>>
>>> ¿Es buena idea hacerlo de esa forma? ¿Alguna idea mejor? ¿Tenéis algún
>>> ejemplo de especificación de select para la carga de una entidad?
>>>
>>> Muchas gracias
>>>
>>> On 12 dic, 13:38, José F. Romaniello <[email protected]> wrote:
>>> > Y otra cosa, en unhaddins hay algo:
>>> http://code.google.com/p/unhaddins/source/browse/#svn/trunk/uNhAddIns...
>>> >
>>> > Aunque para mi, todo el problema el problema de Paginación/Sorting y
>>> > Filtering, se puede resolver con dos funciones en un servicio de la
>>> > siguiente forma:
>>> >
>>> > ICollection<TEntity> GetPage(int size, int pageNumber,
>>> > Expression<Func<TEntity, bool>> predicate, params Func<TEntity,
>>> object>[]
>>> > order);
>>> > int GetLastPageNumber(int size, Expression<Func<TEntity, bool>>
>>> predicate);
>>> >
>>> > <
>>> http://code.google.com/p/unhaddins/source/browse/#svn/trunk/uNhAddIns..
>>> .>Y
>>> > son dos funciones diferentes por que GetLastPageNumber, se llama
>>> unicamente
>>> > cuuando cambia el predicado. Eso da la libertad de en el presenter
>>> hacer
>>> > cualquier cosa.
>>>
>>> --
>>> 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
>



-- 
Fabio Maulo

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