Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Utilização do Lazy em projeto real

Na minha aplicação web, preciso exibir uma lista de clientes cadastrados. A entidade Cliente tem um relacionamento com a entidade Cidade, que por sua vez, tem um relacionamento com a entidade Estado. Todas essas entidades estão configuradas com carregamento Lazy.

Atualmente, quando o usuário visualiza a lista de clientes, eu busco apenas a entidade Cliente, sem aplicar o JOIN FETCH nas entidades relacionadas. Porém, se o usuário clicar para editar um cadastro de cliente, eu devo fazer uma nova consulta para carregar a Cidade associada a esse cliente.

Essa abordagem está correta?

1 resposta
solução!

Olá, Raul!

Sua abordagem está correta, especialmente considerando que você está utilizando o carregamento Lazy. O Lazy Loading é uma estratégia eficiente para evitar a carga desnecessária de dados, o que pode melhorar a performance da sua aplicação.

Quando você carrega apenas a entidade Cliente ao exibir a lista de clientes, está evitando a carga das entidades Cidade e Estado, que podem não ser necessárias nesse momento. Isso é uma boa prática para otimizar o desempenho.

No entanto, quando o usuário clica para editar um cliente, é necessário carregar a Cidade associada. Nesse caso, você pode realizar uma nova consulta ou utilizar o JOIN FETCH para carregar as entidades relacionadas. Veja um exemplo de como você pode fazer isso:

// Exemplo de consulta com JOIN FETCH
String jpql = "SELECT c FROM Cliente c JOIN FETCH c.cidade WHERE c.id = :id";
TypedQuery<Cliente> query = entityManager.createQuery(jpql, Cliente.class);
query.setParameter("id", clienteId);
Cliente cliente = query.getSingleResult();

Essa consulta irá carregar o Cliente e a Cidade associada em uma única consulta, evitando múltiplas idas ao banco de dados.

Espero ter ajudado e bons estudos!