在JPA中,有两个项目与同一个数据库(但不同的表)进行通信。一个使用Hibernate(加上一些Spring),一个使用EclipseLink。必须合并项目:现在必须调用另一个项目。
两者都有persistence.xml配置,但具有特定于供应商的标志。合并两个persistence.xml都没有成功,你可以想象。重构一个项目是不可能的。
我想知道是否可以停止依赖JPA(以避免persistence.xml冲突),但仍然可以使用Persistence.createEntityManagerFactory,并使其与带注释的@javax.persistence.Entity
兼容。
答案 0 :(得分:1)
不,你不能(轻松)"停止依赖JPA"。 JPA是一个API,它是应用程序用于与数据库通信的类和方法的列表。不使用JPA意味着完全重写您的数据库层,您可能希望避免这种情况。
但是,您可以继续并排使用两个persistence.xml
(可能合并到一个文件中)。为此,您将并行维护两个JPA持久性上下文,这意味着您的代码中将有两个不同的EntityManagerFactory
用于(合并)应用程序的不同部分。
这有时会让生活变得更复杂,因为像JPA的Spring集成这样的东西通常假设只有一个持久化上下文,但它应该是可行的。
虽然您的案例看起来相当独特,但并行多个持久化上下文的一个常见原因是您需要从一个应用程序访问多个数据库。例如,请参阅persistence.xml for multiple persistence units了解其工作原理。
原则上,如果两个持久性上下文访问同一个数据库,这也将起作用。您只需要小心JPA中的缓存,因为这通常假设没有其他人正在写入数据库。但是,如果你的两个持久化上下文永远不会在同一个表上运行,那应该没问题。
尝试并行使用两个持久性单元,如果遇到问题,请提出一个新问题: - )。