如果数据库发生更改,如何更新Hibernate

时间:2016-05-22 02:11:32

标签: java database hibernate

例如,我创建了hibernate.cfg.xml并自动生成了类(hbm.xml)。

如果我意识到要从数据库中修改,添加或删除某些内容,通常我必须手动更改数据库,然后手动更改我的hbm.xml源代码。

有没有办法更新而无需删除代码并手动重新生成或修改代码?

编辑:我的意思是直接更改数据库并反映Java代码中的这些更改。对不起,我不太清楚,因为我不知道还有另外一种方式。

2 个答案:

答案 0 :(得分:1)

您可以在运行项目时让Hibernate更新您的数据库架构,方法是将此行添加到hibernate.cfg.xml

<property name="hibernate.hbm2ddl.auto">update</property>

自动属性选项:

  1. create - 它创建对应映射或注释的新表。它删除了现有的表和数据。
  2. update - 它保留现有数据和表格。它更新架构。在这里,我们必须注意反对。
  3. create-drop - 它与创建相同,但一旦会话关闭,它就会丢弃所有内容。
  4. validate - 它使用地图或注释验证或匹配模式。它适用于生产环境。
  5. 如果要从数据库生成.xml映射,可以使用反向JDBC和Hibernate Tools来完成。您只需要指定数据库连接信息。

    这个页面有一个很好的例子:

    Reverse JDBC with Hibernate Tools

    你可以选择你想要的任何东西,但它更好,更便携,易于使用第一个选项。

答案 1 :(得分:0)

好的,所以我找到了方法并且它实际上非常容易。

当我们在Eclipse的hibernate透视图中配置“代码生成配置”时,会保存该配置。因此,当您再次运行它时,它将再次从数据库创建所有“hbm.xml”。

所以:

  1. 在数据库中进行所需的更改。

  2. 删除包含所有“hbm.xml”的包(不确定是否需要)

  3. 转到Hibernate透视图并再次运行配置。

  4. 享受。

  5. 我更喜欢这种方式,因为我不需要编辑许多方法和Java逻辑。我可以在我的数据库中创建一些关系或添加一些新列。显然,只在开发时。