Hibernate setando hibernate.max_fetch_depth

Ola turma.

Tive alguns problemas com desempenho do hibernate, lendo o manual do hibernate encontrei a propriedade hibernate.max_fetch_depth

Lendo o manual:

Sets a maximum “depth” for the outer join fetch tree for single-ended associations (one-to-one, many-to-one). A 0 disables default outer join fetching.
e.g. recommended values between 0 and 3

Bom pelo que entendi ele limita o numero de joins feitos pelo hibernate, com o valor 0 ele desativa o join, maasss, setei como zero e não prejudicou nada em minha aplicacação, pensei que ele não iria mais executar os joins quando eu chamasse uma classe relacionada.

Alguém tem um tempinho para me explicar melhor sobre essa propriedade.

Abraços.

Você está fazendo suas queries via Criteria ou HQL? O parâmetro hibernate.max_fetch_depth afeta essencialmente queries via Criteria. As queries via HQL não são afetadas por esse parâmetro porque você precisa especificar diretamente que associações serão buscadas, através das cláusulas JOIN e FETCH.

Olha todo o sistema praticamente utiliza criteria, por questão de precisar adicionar mais parametros confome a necessidade do usuario, por isso criteria.
So que setando 0, não deu nenhum problema, os criterias executam os join sem barrar nada, mesmo com o session fechado e chamar uma classe relacionada, ele traz sem problema no JSF. exemplo:… value="#{CadastroCliente.baseCliente.idEstado.nomeEstado}" sem problemas.

O meu problema era relacionado ao post http://www.guj.com.br/posts/list/147212.java#796972 e acabei resolvido com esse parametro.