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

时间:2010-12-13 09:57:25

标签: hibernate sequence

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

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

主要问题来自ID生成策略。我们目前正在为我们的ID使用基于序列的生成器,每个表有一个序列。显而易见的举动似乎转向了“本土”战略。但那么它将是所有表格的唯一序列吗?在Oracle上运行的生产系统中的现有数据会发生什么变化?如何迁移?什么是陷阱?

从一个RDBMS /方言转换到另一个RDBMS /方言时需要注意的其他事项吗?

1 个答案:

答案 0 :(得分:3)

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