hibernate - 如何使 Hibernate 应用程序独立于数据库?

标签 hibernate sequence

我们目前在项目内部使用 Oracle 10g,这一点不太可能改变,但最终我们将向其他客户提供此应用程序,并且我们需要能够提出替代的免费数据库。

那么,使 Hibernate 持久层独立于所使用的底层 RDBMS 的最佳方法是什么?理想情况下,我希望能够仅更改 JDBC URL 和使用的方言,以便在(至少)Oracle 10g 和 MySQL 或 PostgreSQL 之间切换。

主要问题来自于ID生成策略。目前,我们的 ID 使用基于序列的生成器,每个表一个序列。明显的举动似乎是转向“本土”策略。但是,这会是所有表的唯一序列吗?我们运行在 Oracle 上的生产系统中的现有数据会发生什么情况?如何迁移?有哪些陷阱?

从一种 RDBMS/方言切换到另一种 RDBMS/方言时还有其他需要注意的事项吗?

最佳答案

我认为 hilo ID 生成器可以跨所有数据库移植。 但如果您选择“ native ”,那么我们在迁移数据库数据时将面临一些挑战。最好在新数据库中从头开始,通过创建对象并使用 Hibernate 保存它们来初始化初始方案数据。这意味着不再需要通过从数据库转储/备份之一恢复并删除事务行来初始化架构:)

关于hibernate - 如何使 Hibernate 应用程序独立于数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427631/

相关文章:

java - EclipseLink 和 Hibernate 之间长时间运行 session 的区别(Vaadin 7 和 JPAContainer)

ajax - 如何将基于 Spring + Hibernate 的应用程序后端与纯 HTML 和基于 AJAX 的客户端连接?

python - 透明地将数字类型处理为单值序列(反之亦然)

java - 由 : java. lang.RuntimeException : Cannot run Liquibase, liquibase.datasource 未设置引起

hibernate - 关于 Jpa 和 Hibernate 双向一对一的 N+1 问题

java - 简单的 hibernate 配置

mysql - 在MySql中,手动顺序和自动增量哪个更快、更高效?

fragment - 在 starUML 的序列图中使用 alt

swift - 协议(protocol)符合Sequence协议(protocol),同时消除通用约束问题

algorithm - 模式和序列 - 将 'a' 表示为 'n' 的函数