Spring + Hibernate + Lazy Load

1 resposta
LeoNicolas

Galera

Tenho um POJO chamado Area que possui um relacionamento OneToMany com o POJO Central, ou seja, uma área possui diversas centrais.
Estou utilizando o Spring com o Hibernate e como todos sabem, a estratégia default do Hibernate para fetch é o Lazy Load.
Por conta disso estava tomando o erro abaixo:

failed to lazily initialize a collection of role: br.com.teste.domain.Area.centrais, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.teste.domain.Area.centrais, no session or session was closed

Para resolver o problema eu alterei no POJO Area, mais especificamente no relacionamento OneToMany com Central, a estratégia para EAGER.
@OneToMany(mappedBy=“area”, fetch=FetchType.EAGER)

Com essa alteração eu fixei a carga das centrais dentro da área para EAGER mas eu gostaria de poder fazer essa escolha em runtime, ou seja, em determinados casos utilizar o LAZY e em outros o EAGER.

Alguém sabe como fazer isso?

1 Resposta

doug

Olá Leo
Não sei se vc consegue… pq vc está anotando essa classe, tipo definindo um padrão
se vc alterar seu pojo em runtime, está alterando esse padrão no seu aplicativo!!

Dependendo do que vc precisa o Lazy é bom… se for para economizar nos select’s na base
usa-se isso… e até o lazy carrega o objeto na sessão… se precisar fazer uma pesquisa de uma pesquisa
já feita… por exemplo o Hibernate usa o objeto em lazy na sessão… dai ele ganha agilidade também!!!

Veja a sua necessidade… creio que o lazy para vc seje melhor… ao invés de ficar configurando cargas
e ainda parece que vc definiu meio hard code, pelo que entendi!! Isso é meio ruim!!!

espero ter ajudado
flwsss

Criado 20 de abril de 2008
Ultima resposta 20 de abr. de 2008
Respostas 1
Participantes 2