我曾经使用NetBeans 6.9.1,这工作得很好。现在我正在NetBeans 7上工作,我要做的是从一个实体类创建一个JPA控制器,这几乎是一个向导,当我完成了这个过程,我试图调用最近生成的JPA控制器,我发现这里面:
public ClientsJpaController(UserTransaction utx, EntityManagerFactory emf) {
this.utx = utx;
this.emf = emf;
}
我在NetBeans 6.9.1中做了同样的事情,这是我的:
public ClientsJpaController() {
emf = Persistence.createEntityManagerFactory("WebServicesInvestigacion6PU");
}
我想知道的是他们为什么改变它,以及用这种新方法编码的正确方法是什么。
我最近研究了类似的东西,因为当我注意到我的12(12)个NetBeans 6.9.1生成的控制器(用于JSE App)中的每一个都创建了一个EntityManagerFactory (EMF)的实例时,我感到震惊,正如问题体中包含的NetBeans 6.9.1示例代码所示。
我读到的所有内容都表明,由于缓存和初始化问题,应用程序不应该(也不需要)创建多个工厂。
我经常看到的推荐实践建议将EMF包装在单例中,并通过静态访问器公开它。使用线程安全的单例。
所以NetBeans 7有一个EMF参数是有意义的。看起来NB7控制器支持最佳实践。