Este post tem por objetivo demonstrar como é feito o carregamento de um objeto(Endereco) mapeado com o LAZY para um objeto (Usuario).  
Abaixo trecho do fonte em Java (Usuario.java) de um mapeamento LAZY, digamos que o mapeamento da sua "Entity" por questões de performance ou até mesmo por padrão do projeto foi mapeado com o carregamento do tipo LAZY (fetch = FetchType.LAZY)
Usuario.java
Abaixo trecho do fonte em Java (Usuario.java) de um mapeamento LAZY, digamos que o mapeamento da sua "Entity" por questões de performance ou até mesmo por padrão do projeto foi mapeado com o carregamento do tipo LAZY (fetch = FetchType.LAZY)
Usuario.java
@Entity
@Table(name = "usuario")
public class Usuario {
   
  @Column
  private String nome;
 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "id_endereco")
 private Endereco endereco;
 public String getNome() {
     return nome;
 }
   
 public void setNome(String nome) {
       this.nome = nome;
 } 
 public Endereco getEndereco() {
      return endereco;
 }
   
 public void setEndereco(Endereco endereco) {
       this.endereco = endereco;
 }
}
Este trecho demonstra o carregamento da entidade "Endereco" sendo executado via código Java, anteriormente conforme mapeado na classe "Usuario.java", podemos observar o mapeamento LAZY para o atributo "endereco", que ao capturar os usuários por sua vez não é carregado a não ser que seja feito o fonte conforme trecho abaixo (Hibernate.initialize(usuario.
private List<Usuario> obterUsuarios(Query query) {
  List<Usuario> usuarios = (List<Usuario>) query.getResultList();
  for (Usuario usuario : usuarios){
   Hibernate.initialize(usuario. getEndereco());
  }
  return usuarios;
 }
Após utilizar Hibernate.initialize sua lista terá seus objetos carregados, com seus respectivos endereço.
Após utilizar Hibernate.initialize sua lista terá seus objetos carregados, com seus respectivos endereço.
Nenhum comentário:
Postar um comentário