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