Olá,
Em vários lugares na internet, inclusive no GUJ, pesquisando por Open Session In View muitas pessoas referem-se a esse padrão como sendo um anti-pattern e recomendam atualmente evitar o uso do padrão ` ex:http://pt.stackoverflow.com/questions/22215/por-que-o-pattern-open-session-in-view-%C3%A9-considerado-um-anti-pattern
No entanto no curso de Controle de horas com Java temos a implementação do EntityManagerProducer:
@ApplicationScoped
public class EntityManagerProducer{
private static EntityManagerFactory factory =
Persistence.createEntityManagerFactory("default");
@Produces @RequestScoped
public EntityManager getEntityManager(){
return factory.createEntityManager();
}
public void close(@Disposes EntityManager manager){
manager.close();
}
}
oque pra mim não deixa de ser um OSV, pois o entitymanager vaificar aberto por toda a vida do request, eu poderia inclusive tratar as transações nessa classe produtora, e toda implementação de classe produtora de entitymanager que vc pesquisa em livros ou na internet estão implementados mais ou menos dessa forma, falando em Vraptor, os próprios plugind do jpa e hibernate implementam o OSV
A questão é: o OSV é realmente nocivo à aplicação dessa forma como dizem? em caso afirmativo porque os frameworks o implementa, e se não for para usar OSV, oque devemos usar?