Olá Nico, uma forma quase padrão de se criar um EntityManagerProducer é a forma que é criado no curso:
public class JPAUtil {
private static EntityManagerFactory emf = Persistence
.createEntityManagerFactory("livraria");
@Produces
@RequestScoped
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
public void close(@Disposes EntityManager em) {
em.close();
}
}
funciona que é um doce, entretanto tem uma coisa que me chama atenção nessa implementação, essa implementação não deixa de ser um openEntityManagerInView, O entity manager é aberto no inicio da requisição e é fechado ao final, mas e se eu não quiser usar openEntityManagerInView (muitos até consideram um anti pattern) no meu projeto, se eu não quiser permitir lazy loading no meu projeto, se eu quiser que todas as minhas queries sejam planejadas, como posso implementar esse producer?