我想定义我的对象,然后使用hibernate从中生成我的ddl。但似乎hibernate唯一真正的工作流程是生成数据库模式然后对其进行反向工程。我想做一些毫无意义的事情吗?
答案 0 :(得分:1)
是的,有一个属性hibernate.hbm2ddl.auto
。 documentation说:
创建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映射并分别使用hbm2java
和hbm2ddl
生成DDL和Java类。
在中间见面:您拥有现有的Java模型和现有数据库。 Hibernate工具在这里帮不了多少,你很可能必须手工编写映射并对数据库或Java代码进行一些重构,或者使用某种桥接器。这是最糟糕的情况。
因此,正如我们所看到的,Hibernate支持多个工作流程并为它们提供工具。在您的情况下,您正在寻找名为hbm2java
的工具(也称为hbm2ddl
,它是实现它的类的名称)。有几种方法可以使用它:
SchemaExport
。SchemaExport
设置为适当的值,在SessionFactory
创建时启用架构的自动导出hibernate.hbm2ddl.auto
Ant任务