我已经看到一些关于通过JPA连接到多个数据库/数据源的文档,但这不是我想要做的。我想使用一个数据库提供程序进行开发,并使用完全不同的数据库提供程序进行生产(可能还有QA)。此问题也适用于支持具有不同数据库提供程序的不同生产环境(即DB2 for Client 1,Oracle for Client 2,MySQL for Client 3等)。
就我而言,我想做以下事情:
我们不使用Spring :(
使用MyBatis,我可以简单地为我想支持的每个数据库提供XML映射。并将所有结果映射回相同的实体/ POJO。
到目前为止,在我看来,JPA将需要自定义所有内容,可能是服务层(实体,DAO,sql都是每个数据库自定义)。
我想知道如何设置应用程序以使用Derby进行开发和DB2进行生产。我是否可以使用相同的实体,如果我将 DAO 层分成单独的项目,我可以使用一个persistence.xml等吗?
请告知您建议采用何种方法来解决此问题。
答案 0 :(得分:0)
这是一种非常常见的情况,如果您正确使用JPA,则无需复制任何内容。您可以使用相同的@Entity
类和DAO。
如果您使用的是Maven,则可以进行特定于某些Maven配置文件的连接设置,例如:为每个环境创建配置文件,然后让Maven资源过滤填充persistence.xml
文件中的属性(请参阅this answer)。