2015-05-13 96 views
1

如何在運行時註冊/取消註冊新實體類(帶註釋或ORM XML) EMF初始化並創建第一個EntityManager。 我知道類似的問題,例如: Adding entity classes dynamically at runtime創建EntityManagerFactory後註冊JPA實體類

水平活力的區別:我們使用可以安裝/運行時卸載和可以爲自己的數據 contatais實體類OSGI插件。

該功能已經使用JDO/DataNucleus實施,並在生產中工作約3年。但是JDO似乎已經死了(在Apache也是如此)。 DataNucleus的採用率相對較低,只有一名活躍(和優秀)的開發人員(因爲項目在很多方面非常有趣而感到難過)。

如何做一些類似於流行的JPA實現?

+1

奇怪的是,我在Apache JDO JIRA上看到JDO 3.2,並且在那裏沒有看到任何「死」(並且沒有JPA 2.2的跡象) –

+1

@NeilStockton thanx評論和您在JDO API上的努力。我分析了郵件列表和Jira活動......不太匹配。你和Andy Jefferson試圖推動JDO,但你的努力是不夠的。 Personaly我對JDO非常有趣,並且想自己擴展它。不幸的是,我只是**應用程序**架構師,絕對沒有時間去開發如此龐大的規格(DataNucleus的一些補丁不算)。 –

回答

0

您不能將類添加到現有的EntityManagerFactory。你應該做的是爲每個bundle創建一個持久化單元。因此,在更新包時,您將獲得一個新的EntityManagerFactory作爲服務。不幸的是,現在的Apache Aries jpa在更新包含持久性單元的捆綁包時存在已知問題。

我正在處理Apache Aries jpa 2.0版本的代碼,該代碼將能夠處理此問題。

+0

我知道**標準** JPA不支持。我要求實現特定的API,比如在DataNucleus或OpenJPA(偏好支持)。 OSGI JPA不能比提供者做得更多。實際上,在實踐中,在包中創建EMF並與其他模塊(如OSGI服務)共享它比使用OSGI的持久化捆綁包更簡單。 –