Open Session in View ( LazyInitializationException )

Alguém consegiu contornar open session in view ao trabalhar com JPA? Poderia compartilhar?

Estou tendo o famoso “LazyInitializationException”, e encontrei diversas soluções porém todas ligadas ao hibernate.
Sendo assim eu teria que implementar o “HibernateUtil” para pegar o session, ficando asssim amarrado ao hibernate…
Ou utilizar algum framework como Spring ou Eclipse Link para controlar o opem session in view. me corrijam se estiver errado…

Estou fazendo assim atualmente…

Salvo um objeto.

getEm().merge(paciente); getEm().flush();
//retorna o EntityManager

[code]public EntityManager getEm() {
ELContext el = FacesContext.getCurrentInstance().getELContext();

	return (EntityManager) FacesContext.getCurrentInstance()
			.getApplication().getELResolver()
			.getValue(el, null, "entityManager");

}[/code]//Web Filter JPA

[code]public class FiltroJPA implements Filter {

private EntityManagerFactory factory;

@Override
public void destroy() {
	this.factory.close();
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) 
throws IOException, ServletException,PersistenceException
{
	EntityManager entityManager = this.factory.createEntityManager();
	request.setAttribute("entityManager", entityManager);
	
	entityManager.getTransaction().begin();
	chain.doFilter(request, response);
	 
	try {
		entityManager.getTransaction().commit();
	} catch (Exception e) {
		entityManager.getTransaction().rollback();
	} finally {
		entityManager.close();
	}
}

@Override
public void init(FilterConfig arg0) throws ServletException {
	this.factory = Persistence.createEntityManagerFactory("jpa");
}[/code]

Aceito sugestões :smiley:

Se você não precisa de conversação e está recebendo esta exceção, bem, isso é um forte indício de que você não planejou suas consultas. Você pode até utilizar o anti-pattern OpenSessionInView para não ter mais este erro, mas você terá, muito provavelmente, consultas N+1.

Tenho um post sobre esse assunto, se você quiser se aprofundar mais.

http://www.guj.com.br/java/231652-alguem-usa-algum-padrao-diferente-de-open-session-in-view-ao-trabalhar-com-jpa

[quote=Flavio Almeida]Se você não precisa de conversação e está recebendo esta exceção, bem, isso é um forte indício de que você não planejou suas consultas. Você pode até utilizar o anti-pattern OpenSessionInView para não ter mais este erro, mas você terá, muito provavelmente, consultas N+1.

Tenho um post sobre esse assunto, se você quiser se aprofundar mais.

http://www.guj.com.br/java/231652-alguem-usa-algum-padrao-diferente-de-open-session-in-view-ao-trabalhar-com-jpa[/quote]

Opa flávio. Estou no início do projeto, ainda da tempo de mudar as consultas.

Você se refere ao Fetch.Lazy por ex?

[quote]
Flavio Almeida wrote:Se você não precisa de conversação e está recebendo esta exceção, bem, isso é um forte indício de que você não planejou suas consultas. Você pode até utilizar o anti-pattern OpenSessionInView para não ter mais este erro, mas você terá, muito provavelmente, consultas N+1.

Tenho um post sobre esse assunto, se você quiser se aprofundar mais.

http://www.guj.com.br/java/231652-alguem-usa-algum...n-in-view-ao-trabalhar-com-jpa

Opa flávio. Estou no início do projeto, ainda da tempo de mudar as consultas.

isso é um forte indício de que você não planejou suas consultas.

Você se refere ao Fetch.Lazy por ex?[/quote]

Bom o tópico não é muito recente, mas estou passando pelo mesmo problema, alguém mais também teve esse problema, e como solucionou?
E qual solução adotaram?

Obrigado desde já pessoal.