Bom pessoal,
já li um tanto sobre o hibernate e to testando implementando alguma coisa…
Minha dúvida é sobre o Eager e o Lazy, já sei qual a função de cada um
inclusive exemplificada no post abaixo…
http://guj.com.br/posts/list/87079.java#465609
Mas em meus teste aqui aparentemente não funcionou, nos dois FetchType os resultados
foram trasidos na busca do objeto Estado…
por acaso, ao inspecionar um objeto Estado no Eclipse ele executa o Lazy automaticamente?
o Mapeamento do atributo Estado minha classe Cidade.java:
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ESAUF", insertable=true, updatable=false)
@Fetch(FetchMode.JOIN)
@Cascade(CascadeType.SAVE_UPDATE)
private Estado estado;
O método que busca minha cidade no BD dentro do CidadeDAO.java:
public Cidade findById(Integer id) throws Exception{
Cidade cidade = new Cidade();
cidade = (Cidade) session.get(Cidade.class, id);
return cidade;
}
ao testar minha app:
public static void main(String[] args) {
Cidade c = new Cidade();
CidadeDAO cDao = new CidadeDAO();
try {
// Buscando a Cidade
c = cDao.findById(3);
// Pelo mapeamento, não deveria ter o Estado aqui...
System.out.println(c.getId() + " - " + c.getNome());
// O Estado só deveria ser buscado aqui?
e = c.getEstado();
System.out.println(c.getEstado().getUf() + " - " + c.getEstado().getNome());
} catch (Exception e1) {
e1.printStackTrace();
}
}
Estou testando pelo Debbuger no eclipse, em momento que vou verificar o estado ali na linha 11 da app,
inspecionando o objeto c.getEstado(); ele já tem os valores do BD…
é correto? como funciona e como testar pra notar a diferença Eager, Lazy…
Obrigado!!!