Has-many é desaconselhável quando há muitos registros?
07/03/2016 20:17
2
Caros colegas,

Em minha aplicação (que ainda se encontra em desenvolvimento e testes) faço uso de alguns relacionamentos many-to-many e no domínio faço uso das declarações has-many, mapped-by, etc.

Para minha surpresa encontrei um documento que apresenta uma série de "riscos" na utilização destes recursos do Hibernate. 

? “hasMany = [visits: Visit]” creates a Set(org.hibernate.collection.PersistentSet) in Library – the “inverse”
collection in traditional Hibernate
? Adding to the Set requires loading all instances from the database to
guarantee uniqueness, even if you know the new item is unique

? Likewise for a mapped List – Hibernate pulls the entire collection to
maintain the correct order, even if you're adding to the end of the list
? In traditional Hibernate you could map the collection as a Bag, which
is just a regular Collection with no ordering or uniqueness guarantees,
but Grails doesn't support Bags
Espantou-me bastante o fato que Adding to the Set requires loading all instances from the database to
guarantee uniqueness, even if you know the new item is unique.

e também:

Works fine in development when you only have a few Visits, butimagine when you deploy to production and you have 1,000,000 Visits
and want to add one more

Isto é verdade? Vocês já passaram por estes problemas?

Referência: http://burtbeckwith.com/blog/files/169/gorm%20grails%20meetup%20presentation.pdf?


Obrigado!
Tags: Grails,has-many,hibernate,loading all instances


3
Oi Pedro,

este é um tema interessante. Minha opinião sobre o uso de hasMany em qualquer framework de ORM é a seguinte: não use, e se for usar, use apenas se for SEMPRE necessário carregar os filhos junto.

Isto te evita uma série de problemas
* O caso em que diversos registros filhos são criados
* Problemas com fechamento de sessão do Hibernate
* Uma economia monstruosa de memória
* Uma melhor modularidade do código, visto que as dependências passam a ser unidirecionais e, portanto, mais fáceis de serem geridas

Inclusive escrevi sobre isto neste post: http://www.itexto.net/devkico/?p=1097


0
Ainda falando sobre HasMany, como posso selecionar mas de um item na minha HasMany.
Exemplo: tenho uma lista de usuarios cadastrados, esses usuarios são passados para outra classe por meio de uma hasmany, gostaria de selecionar mais de um usuário.
08/03/2016 18:21


0
Olá Arlindo.
Sugiro que você faça uma postagem específica sobre este assunto, ok? Assim separamos estes  conteúdos distintos e poderemos enriquecer mais ainda o grupo. Que tal?
08/03/2016 20:26


1
Caramba Kiko, muito bom saber. Valeu!
09/03/2016 10:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto