Eager e Lazy, denovo... como testar?

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!!!

vc pode analizar as queries geradas pelo hibernate nos logs:

[code]hibernateProps = java.util.Properties()
hibernateProps.setProperty(“hibernate.dialect”, “org.hibernate.dialect.H2Dialect”)
hibernateProps.setProperty(“hibernate.connection.driver_class”, “org.h2.Driver”)
hibernateProps.setProperty(“hibernate.format_sql”, “true”)
hibernateProps.setProperty(“hibernate.show_sql”, “true”)

hibernateConfig = org.hibernate.cfg.Configuration()
hibernateConfig.setProperties(hibernateProps)[/code]

Repare na propriedade hibernate.show_sql.

Para ver os logs vc tem q ter o log4j configurado e ativo:

log4j.logger.org.hibernate=info

E ai vc pode ver como ele esta executando as queries e ver se esta correto ou não.

hmmm, vou tentar isso e repondo logo mais…

porém, fiquei um pouco confuso com o FetchMode.JOIN
Ele já não executa um JOIN no proprio SQL retornando o estado junto com a cidade?

então o Lazy não funcionaria mesmo… :?

obrigado por enquanto…