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