【发布时间】:2013-04-03 23:08:16
【问题描述】:
我是 OSGi 的初学者,我的项目包括在 OSGi 容器(apache felix;可分发 jar)中开发和执行持久性捆绑包(使用 jpa),然后通过 jpa 与数据库(MySql)通信提供程序(休眠)。
我阅读了有关 OSGi 的 jpa 规范,因此,如果我理解正确,我必须为 OSGi 使用 JPA 提供程序来实现 OSGI jpa 企业规范。此 jpa 提供程序将跟踪已注册的持久性捆绑包以为其创建 EntityManagerFactory ?
那么直接使用 jpa 提供程序创建 EntityManagerFactory (Persistence.createEntityManagerFactory("xx")) 或从注册表中检索它有什么区别:
serviceReferences = context.getServiceReferences(
EntityManagerFactory.class.getName(),
String.format("(%s=%s)",
EntityManagerFactoryBuilder.JPA_UNIT_NAME,
persistenceUnit));
我不想使用任何容器(apache karaf、geronimo、spring dm、..)所以,我将在 OSGi 容器中安装并启动是否足够,例如“org.apache.aries.jpa .api”作为 OGSi 企业 jpa 规范的实现,然后只从与我的持久性单元名称关联的注册表中检索“EntityManagerFactory”服务,或者我也应该自己注册一个像 HibernatePersistence 这样的 PersistenceProvider 以将其声明为“提供者”在我的 persistence.xml 文件中?
我在这里发现了很多关于这个话题的讨论。不过我还是有问题
谢谢
【问题讨论】: