Boa tarde!
Temos uma aplicação JSF que utiliza Hibernate, da qual vamos refatorar alguns pontos para melhora de performance.
Minha dúvida é sobre o uso de coleções, na qual uma entidade Pai pode ter várias coleções de entidades filhos (utilizando Set<>). Utilizando o mapeamento dessas coleções o desenvolvimento é bastante facilitado, dado que manipulamos as coleções na entidade pai e persistimos, e o hibernate já lida com as alterações, inserindo registros, alterando e excluindo os objetos filhos conforme necessário.
Porém, mesmo utilizando fetch LAZY, o sistema ficou relativamente grande e lento quando precisamos fazer consultas que tragam muitos objetos com suas coleções (carregadas explicitamente nas criterias).
Como iremos refatorar, gostaria de saber se existe alguma outra abordagem este tipo de situação, bem como de que forma os dev’s mais experientes lidam com esse tipo de questão na prática.
Supondo que temos uma tela de vendas, com a entidade venda e a entidade vendaproduto… qual a melhor forma de construir este lançamento?
Hoje instanciamos venda = new Venda() e no front-end vamos adicionando objetos vendaproduto na coleção de venda, e persistimos venda, Ao carregar uma venda, explicitamos a leitura da coleção (para não cairmos em um select N+1 das entidades filho)
É isso mesmo ou existe outra abordagem?
Obrigado desde já