我是 OSGi 的初学者,我的项目包括在 OSGi 容器(apache felix;可分发 jar)中开发和执行持久性捆绑包(使用 jpa),然后通过 jpa 提供程序(Hibernate)与数据库(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 以在我的持久性中将其声明为“提供者” .xml 文件?
我在这里发现了很多关于这个话题的讨论。不过我还是有问题
谢谢