首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建在容器和独立应用程序中工作的JPA EntityManagerFactory?

如何创建在容器和独立应用程序中工作的JPA EntityManagerFactory?
EN

Stack Overflow用户
提问于 2012-03-16 01:12:46
回答 1查看 996关注 0票数 0

我对JPA很陌生,所以在搜索了一段时间之后,我想不出该如何做以下事情。

我希望在单元测试、生产-树脂应用服务器以及GWT (jetty)的开发模式中使用JPA注释类。

问题是,在单元测试中,我可以将Persistence.createEntityManagerFactory与META/sistence.xml一起使用,而且效果很好。但是,它不适用于树脂,我在GWT开发模式中也得到了同样的错误。

我可以通过使用@Inject注解和树脂-web.xml让它在树脂上工作,但不确定如何在GWT模式下使用它。

如果可能的话,我想在所有3种情况下使用相同的代码:单元测试、GWT的Jetty和生产中的树脂。我也喜欢让树脂处理连接池,如果可能的话避免使用Spring。

是否有涵盖此特定案例的教程或任何代码示例?什么是最佳做法?

EN

回答 1

Stack Overflow用户

发布于 2012-03-16 15:18:58

因为您可以使用Guice,所以Guice可以删除现有的@Inject注释。

因此,这里的想法是在运行您的代码时执行与树脂相同的操作。树脂识别@Inject注释,找到适当的类并实例化,而不是注入该值。我们可以让Guice为您的单元测试和GWT模式做同样的事情。

最大的改变是您必须为您的persistence.xml创建一个单独的配置文件。复制现有文件并更改名称。例如,如果您现有的PU是"myJPAUnit",那么在新文件中,将它命名为"myJPAUnitLocal“如下:

代码语言:javascript
复制
 <persistence-unit name="myJPAUnitLocal" transaction-type="RESOURCE_LOCAL">
 </persistence-unit>

另一个关键更改是将transaction-type更改为RESOURCE_LOCAL,如上面的示例所示,因为您的事务不是由容器管理的。

我不会讨论预reqs,因为Google上有很多关于用Guice运行Junit测试和webapps的好教程,但我认为这可能是一个绊脚点。剩下的步骤如下:添加Guice过滤器,扩展GuiceServletContextListener,向其中添加JPA注入器,将侦听器添加到web.xml中。

如何在webapp:http://code.google.com/p/google-guice/wiki/ServletModule

  • How中初始化Guice以向Guice:http://code.google.com/p/google-guice/wiki/JPA

添加JPA注入器

祝好运!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9730518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档