我们目前在项目内部使用 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/