【问题标题】:Using Different Database Providers for Development vs Production with JPA通过 JPA 使用不同的数据库提供程序进行开发与生产
【发布时间】:2016-04-12 20:00:18
【问题描述】:

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

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

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

我们不使用 Spring :(

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

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

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

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

【问题讨论】:

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

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2019-06-28
    • 1970-01-01
    • 2012-01-12
    • 2015-11-18
    相关资源
    最近更新 更多