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

使用不同的数据库提供程序进行JPA开发与生产,jpa,db2,derby,development-environment,production-environment,Jpa,Db2,Derby,Development Environment,Production Environment,我看过一些关于通过JPA连接到多个数据库/数据源的文档,但这并不是我想要做的。我想使用一个数据库提供者进行开发,使用一个完全不同的数据库提供者进行生产(可能还有QA)。这个问题也适用于支持具有不同数据库提供程序的不同生产环境(例如,DB2用于客户端1,Oracle用于客户端2,MySQL用于客户端3,等等) 就我而言,我想做以下工作: 将JPA与ApacheDerby一起用于开发目的 将JPA与IBM DB2一起用于生产目的 我们不使用Spring:( 使用MyBatis,我可以简单地为我想

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

就我而言,我想做以下工作:

  • 将JPA与ApacheDerby一起用于开发目的
  • 将JPA与IBM DB2一起用于生产目的
我们不使用Spring:(

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

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

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


请告知您建议采用什么方法来适应这种情况。

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


如果您使用的是Maven,则可以针对某些Maven配置文件进行连接设置,例如,为每个环境创建配置文件,然后让Maven资源筛选填充
persistence.xml
文件中的属性(请参阅).

这是一个非常常见的场景,如果正确使用JPA,您不需要复制任何内容。您可以使用相同的
@Entity
类和DAO


如果您使用的是Maven,则可以针对某些Maven配置文件进行连接设置,例如,为每个环境创建配置文件,然后让Maven资源筛选填充
persistence.xml
文件中的属性(请参阅).

并且您也可以在JPA中为每个数据库提供XML映射;如果需要在不同的数据存储上使用不同的模式,则不使用注释;如果需要在不同的数据存储上使用不同的模式,则也可以在JPA中为每个数据库提供XML映射;如果需要在不同的数据存储上使用不同的模式,则不使用注释