是否有一个简单的工作流程来从带有Hibernate映射的类生成数据库架构?
题
ID喜欢定义我的对象,然后使用Hibernate从中生成我的DDL。但是,Hibernate的唯一真正的工作流程似乎是生成Datbase模式,然后将其倒转工程师。我想做的事情没有道理吗?
解决方案
是的,有一个属性 hibernate.hbm2ddl.auto
. 。这 文档 说:
当创建会话范围时,会自动验证或导出架构DDL到数据库。使用Create-Drop,当SessionFactory明确关闭时,数据库架构将被删除。
例如验证|更新|创建|创建
有多种定义此属性的方法,具体取决于您如何配置 SessionFactory
. 。冬眠的方法是简单地添加:
<property name="hibernate.hbm2ddl.auto">update</property>
其他提示
但是,Hibernate的唯一真正的工作流程似乎是生成数据库架构,然后将其倒转工程师。
不,绝对不是。从历史上看,冬眠支持几种方法:
自顶向下: 您从对象模型开始,然后使用XML文件或注释创建映射元数据,然后使用Hibernate's生成架构
hbm2ddl
工具。自下而上: 您从现有数据库开始,然后使用数据库架构生成映射和Java类(或仅使用注释的Java类)
hbm2hbmxml
和hbm2java
.中间: 您开始编写Hibernate XML映射,并使用DDL和Java类生成
hbm2ddl
和hbm2java
分别。在中间见面: 您有现有的Java模型和现有数据库。 Hibernate Tooling在这里无济于事,您很可能必须手工编写映射,并对数据库或Java代码进行一些重构,或者使用某种桥梁。这是最糟糕的情况。
因此,正如我们所看到的,Hibernate支持几个工作流并为它们提供工具。就您而言,您正在寻找称为的工具 hbm2ddl
(也称为 SchemaExport
, ,这是实现它的类的名称)。有几种使用它的方法:
- 你可以运行
SchemaExport
以编程方式。 - 您可以在
SessionFactory
通过设置属性来创建时间hibernate.hbm2ddl.auto
适当的价值 - 您可以使用
<hbm2ddl>
蚂蚁任务
参考
- 休眠核心参考指南
- 休眠工具参考指南