【问题标题】:JPA and compatibility with persistance providers and databases vendorsJPA 以及与持久性提供程序和数据库供应商的兼容性
【发布时间】:2010-05-02 20:10:40
【问题描述】:

JPA 承诺在持久性和数据库方面保持供应商中立。但我已经知道,像 hibernate 这样的一些持久性框架并不完美(字符编码、空值比较),您需要为每个数据库调整架构。因为有两层(持久性框架和数据库),我想它们是使用一些 JPA 代码的一些工作......

有没有人有过多种支持的经验,如果有,有哪些技巧和建议可以避免这种不兼容?

【问题讨论】:

  • 任何具体的例子(因为 AFAIK,字符编码可以指定为属性或在连接 url 中)?另请注意,对我来说,为不同的数据库使用不同的模式似乎只是“正常”(因为 Oracle 使用序列、MySQL 自动增量字段等,所以如果你想利用它们,最好的方法是让 JPA 提供程序为每个数据库生成 DDL )。

标签: java hibernate jpa jakarta-ee


【解决方案1】:

在 JPA 级别上,你唯一能做的就是使用当前使用的持久性库的 JPA API(即在使用 hibernate 时,不要使用 Hibernate.initialize())。

在数据库级别上,最好的办法是保持简单,因为随着您远离最常见的用例,行为差异的可能性会增加。具体来说,这可能意味着不使用复合主键、不存储二进制数据、根本不使用 SQL 执行……我相信其他人会有更多好的实践示例,可以让您轻松地从一个数据库移动到另一个数据库。

以上内容使我可以在 PostgreSQL 和 Oracle 之间切换一个应用程序,以及在 PostgreSQL 和 MySQL 的一些“方言”(用休眠术语)之间切换另一个应用程序。

【讨论】:

    猜你喜欢
    • 2013-09-30
    • 2014-01-25
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    • 2018-04-03
    相关资源
    最近更新 更多