【发布时间】:2016-10-07 22:39:00
【问题描述】:
我为大学的一个项目制作了一个客户端-服务器应用程序,但在数据库-JPA 缓存同步方面遇到了问题。我正在使用一个应用程序管理的 EntityManager,我从其他帖子中发现它真的很难使用,因为你总是必须小心地打开和关闭它。
我发现这个问题的最佳解决方案是使用容器管理的 EntityManager,使用 @PersitenceContext 注释进行初始化,这样我就不必再担心 EM 打开和关闭了。
所以我真正的问题是,如何使用 EclipseLink JPA 在 Java SE 中注入 EntityManager,因为我从未通过 NullPointerException。我将附上此操作示例的一些打印屏幕以及我认为应该完成的方式。
对于我的项目,我使用 jdk 1.8、基本 jpa 配置 (2.1) 和 EclipseLink 2.5.x 作为平台。在数据库方面,我使用的是 MySql-Server,没有应用程序服务器(这个必须由我开发)。
persistence.xml 文件
包含示例的 2 个类: https://gyazo.com/a7b1a372875a259096dc220653cd5bcd
【问题讨论】:
-
正如 Laszlo 所说,如果您有“容器”,则只能使用“容器管理的 EntityManager”。 “容器”是 Java EE 服务器或 Spring 等框架的名称。关于 all Java 注释要记住的是,它们只是没有行为的元数据。其他一些代码需要读取注解然后对其进行操作:“容器”。
-
(顺便说一句,当你发布代码时,请发布实际代码,而不是截图。使用代码标记来获得适当的缩进和着色。)
-
你也可以自己启动一个cdi容器,不用spring:deltaspike.apache.org
标签: java jpa eclipselink entitymanager persistence.xml