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 - Spring + hibernate : server receives correct JSON but Hibernate inserts null values

oracle - Oracle 序列存储在哪个表空间中?

math - 返回格式 x^y 的第 i 个数字,其中 x 和 y 是整数

java - 使用 Hibernate 和 Spring 时连接过多

eclipse - 使用Spring+Hibernate部署Maven项目到Tomcat

java - 在 Spring CrudRepository 中使用 List<Long> 作为参数

java - 如何防止 JPA 回滚事务?

java - 如何使用pixelmed(java)访问嵌套序列中的dicom属性?

ssis - 当 SSIS 序列容器出现故障时,为什么我的故障流不会启动?

r - 生成后缀数递增的重复字符串的向量