在hibernate中更新数据库模型

时间:2015-01-13 12:51:56

标签: java mysql hibernate

我有一个简单的MySQL数据库,其中包含一些使用hibernate框架映射到java类的有效数据。

现在我在MySQL中更改了一些数据库表字段,并希望更新我的模型(例如java类)。

我不想重新映射我的数据库,因为我在需要它们的模型类中做了一些更改。

有没有办法更新模型而不会丢失任何数据?

我使用的是Netbeans 8.0和Hibernate 4.x.

是否有一个向导来执行此操作,就像在Netbeans的实体框架(Visual Studio)中更新模型一样?

感谢。

3 个答案:

答案 0 :(得分:1)

作为检查实体字段的快速而直接的工具,分别对应于 ,你可以尝试hbm2ddl.auto = validate。但这似乎不会检查关系/约束 - 请参阅here。 AFAIK没有简单的方法:我能想到的唯一方法就是使用Hibernate Tools reverse engineering - 只需几步就可以完成这一步,如果您使用谷歌,可以在线获取一些指南。理想情况下,您希望在"之前" """"数据库的版本,在两个不同的文件夹中生成两组实体,然后在这些文件夹之间区分更改(使用您喜欢的文本差异工具,例如WinMerge)。然后最后手动将它们合并到您现有的代码库中。

为了避免将来反复这样做,您可能需要考虑设置一些进程来保持对正在进行的数据库模式更改的良好记录和/或确保数据库和实体始终保持在同步。

答案 1 :(得分:0)

为什么你不编写一些SQL脚本来将java类与数据库同步,反之亦然?

我经常写很多脚本来改变,插入或删除数据等。

这是你在说什么?

答案 2 :(得分:0)

RDBMS的推荐方法是使用迁移工具并编写迁移脚本,例如,请参见:FlywayLiquibase

此外,您还可以按照@Steve的建议,使用hbm2ddl.auto = validate在启动时验证数据库。