我有两个数据库 - 新的(重构的)和旧的(遗留的)数据库,我希望应用程序为两个数据库运行(不是同时,目的是在旧数据库上运行应用程序一段时间,然后将一些客户端切换到新数据库,并在一段时间后删除旧数据库的supprt)。显然 - 不同的配置,JPA实体到数据库的映射是唯一的区别。
我知道这可以通过维护两个JPA persistence.xml配置文件来实现。但我想有以下设置: - 主数据库的配置应该在注释中(因为它更容易开发和维护注释,并且可以放在主代码中)。 - 旧数据库的配置应该是覆盖注释的XML文件。
这是否可行以及如何实现。据我所知,相反的方法是可行的 - 在persistence.xml中保持映射并使用注释覆盖。
答案 0 :(得分:1)
实际上,JPA提供程序允许您使用注释定义映射并使用XML文件覆盖设置。这(几乎)是任何java EE规范的默认行为。
在这种情况下,您可以使用新数据库的注释定义映射,然后通过仅声明JNDI位置和标志来定义persistence.xml:
<排除-不公开的类&GT假LT; /排除-不公开的类>
任何其他映射都将在注释级别上处理。
对于旧数据库,您可以使用persistence.xml或orm.xml声明另一个持久性单元并覆盖注释中声明的行为。
在您的代码中,您可以按名称引用相应的持久性单元。