使用不同的数据库提供程序进行开发与使用JPA生成

时间:2016-04-12 20:00:19

标签: jpa db2 derby development-environment production-environment

我已经看到一些关于通过JPA连接到多个数据库/数据源的文档,但这不是我想要做的。我想使用一个数据库提供程序进行开发,并使用完全不同的数据库提供程序进行生产(可能还有QA)。此问题也适用于支持具有不同数据库提供程序的不同生产环境(即DB2 for Client 1,Oracle for Client 2,MySQL for Client 3等)。

就我而言,我想做以下事情:

  • 将JPA与Apache Derby一起用于开发目的
  • 将JPA与IBM DB2一起用于生产目的

我们不使用Spring :(

使用MyBatis,我可以简单地为我想支持的每个数据库提供XML映射。并将所有结果映射回相同的实体/ POJO。

到目前为止,在我看来,JPA将需要自定义所有内容,可能是服务层(实体,DAO,sql都是每个数据库自定义)。

我想知道如何设置应用程序以使用Derby进行开发和DB2进行生产。我是否可以使用相同的实体,如果我将 DAO 层分成单独的项目,我可以使用一个persistence.xml等吗?

请告知您建议采用何种方法来解决此问题。

1 个答案:

答案 0 :(得分:0)

这是一种非常常见的情况,如果您正确使用JPA,则无需复制任何内容。您可以使用相同的@Entity类和DAO。

如果您使用的是Maven,则可以进行特定于某些Maven配置文件的连接设置,例如:为每个环境创建配置文件,然后让Maven资源过滤填充persistence.xml文件中的属性(请参阅this answer)。