Em determinado banco de dados, a entidade Pedido está mapea...

Próximas questões
Com base no mesmo assunto
Q3104131 Banco de Dados

Em determinado banco de dados, a entidade Pedido está mapeada com uma relação @OneToMany com a entidade Item, configurada com a estratégia de carregamento Eager.

A partir da situação apresentada, julgue o item seguinte, relativo ao framework Hibernate.


Se a estratégia de carregamento for definida como Eager na relação @OneToMany entre a entidade Pedido e a entidade Item, o Hibernate automaticamente carregará todos os itens relacionados ao pedido assim que o pedido for consultado.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Vamos analisar a questão apresentada sobre a estratégia de carregamento Eager no contexto do framework Hibernate, especialmente na relação @OneToMany entre as entidades Pedido e Item.

A resposta correta é a alternativa C - certo.

Para compreender melhor, precisamos entender alguns conceitos básicos do Hibernate:

1. Estratégia de Carregamento: No Hibernate, ao mapear entidades, podemos definir como os dados relacionados serão carregados do banco de dados. Existem duas estratégias principais:

  • Eager: Carregamento adiantado, onde as entidades associadas são carregadas imediatamente junto com a entidade pai.
  • Lazy: Carregamento atrasado, onde as entidades associadas são carregadas apenas quando explicitamente acessadas.

2. Relação @OneToMany: Essa anotação indica que uma entidade (neste caso, Pedido) está associada a várias ocorrências de outra entidade (neste caso, Item).

Na questão, foi mencionado que a relação @OneToMany entre Pedido e Item utiliza a estratégia Eager. Isso significa que, ao consultar um Pedido, o Hibernate automaticamente carrega todos os Itens associados a ele.

Justificativa: A alternativa C - certo está correta porque reflete precisamente o comportamento da estratégia Eager em um relacionamento @OneToMany. Não há alternativas adicionais nesse contexto para serem analisadas como incorretas.

Este tipo de carregamento é útil quando sabemos que sempre precisaremos dos dados relacionados e queremos evitar múltiplas consultas ao banco de dados, mas devemos ter cuidado com o desempenho, especialmente quando o conjunto de dados associado é grande.

Gostou do comentário? Deixe sua avaliação aqui embaixo!

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Certo

Eager no Hibernate: significa que o framework carregará automaticamente as entidades relacionadas assim que a entidade principal for consultada.

No caso da relação @OneToMany entre PEDIDO e ITEM, ao buscar um pedido, o Hibernate também carregará todos os itens relacionados a ele, independentemente de eles serem acessados ou não no código posteriormente.

Preciso nem de dizer que isso destrói o desempenho da aplicação

O correto é usar o Lazy que os itens seriam carregados somente quando acessados explicitamente.

No contexto de frameworks de mapeamento objeto-relacional (ORM) como o Hibernate, a estratégia de carregamento define quando os dados associados a uma entidade relacionada devem ser carregados. As duas estratégias principais de carregamento são Lazy e Eager. A estratégia Eager significa que os dados relacionados a uma entidade serão carregados automaticamente no momento em que a entidade principal for consultada, enquanto a estratégia Lazy carrega os dados relacionados apenas quando são explicitamente acessados.

No caso descrito, a relação entre as entidades Pedido e Item é mapeada com a anotação @OneToMany e a estratégia de carregamento é definida como Eager.

Quando a estratégia de carregamento é definida como Eager para a relação @OneToMany, isso significa que, ao carregar a entidade Pedido, o Hibernate irá automaticamente carregar todas as entidades Item associadas a este Pedido, independentemente de essas entidades serem acessadas diretamente ou não.

No Hibernate, o carregamento Eager pode resultar em consultas adicionais ao banco de dados (como um JOIN), para garantir que todos os dados relacionados sejam carregados de uma vez. Isso pode ser vantajoso em cenários em que é esperado que as entidades relacionadas sejam sempre acessadas logo após o carregamento da entidade principal. No entanto, o uso indiscriminado de carregamento Eager pode levar a problemas de desempenho, como o carregamento desnecessário de grandes volumes de dados.

Resposta: Certo - chatgpt

---------------

Eager = Ansioso ---> carrega tudo "mesmo antes de precisar"

Lazy = preguiçoso ----> carrega só o que precisa

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo