是否有一个简单的工作流来从具有hibernate映射的类生成数据库模式?

时间:2010-09-09 06:39:10

标签: java hibernate orm top-down

我想定义我的对象,然后使用hibernate从中生成我的ddl。但似乎hibernate唯一真正的工作流程是生成数据库模式然后对其进行反向工程。我想做一些毫无意义的事情吗?

2 个答案:

答案 0 :(得分:1)

是的,有一个属性hibernate.hbm2ddl.autodocumentation说:

  

创建SessionFactory时,自动验证或将架构DDL导出到数据库。使用create-drop,当SessionFactory显式关闭时,将删除数据库模式。

     

e.g。验证|更新|创建| create-drop

根据您配置SessionFactory的方式,有多种方法可以定义此属性。 hibernate的方法是简单地添加:

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

答案 1 :(得分:1)

  

但似乎hibernate唯一真正的工作流程是生成数据库模式然后对其进行反向工程。

不,绝对没有。从历史上看,Hibernate支持几种方法:

  • 自上而下:从对象模型开始,然后使用XML文件或注释创建映射metatdata,然后使用Hibernate的hbm2ddl工具生成模式。

  • 自下而上:从现有数据库开始,使用hbm2hbmxml和{{1}从数据库模式生成映射和Java类(或仅注释的Java类) }。

  • 中出:您开始编写Hibernate XML映射并分别使用hbm2javahbm2ddl生成DDL和Java类。

  • 在中间见面:您拥有现有的Java模型和现有数据库。 Hibernate工具在这里帮不了多少,你很可能必须手工编写映射并对数据库或Java代码进行一些重构,或者使用某种桥接器。这是最糟糕的情况。

因此,正如我们所看到的,Hibernate支持多个工作流程并为它们提供工具。在您的情况下,您正在寻找名为hbm2java的工具(也称为hbm2ddl,它是实现它的类的名称)。有几种方法可以使用它:

  • 您可以通过编程方式运行SchemaExport
  • 您可以通过将属性SchemaExport设置为适当的值,在SessionFactory创建时启用架构的自动导出
  • 您可以使用hibernate.hbm2ddl.auto Ant任务

参考