是否有一个简单的工作流程来从带有Hibernate映射的类生成数据库架构?

StackOverflow https://stackoverflow.com/questions/3674322

  •  01-10-2019
  •  | 
  •  

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类) hbm2hbmxmlhbm2java .

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

  • 在中间见面: 您有现有的Java模型和现有数据库。 Hibernate Tooling在这里无济于事,您很可能必须手工编写映射,并对数据库或Java代码进行一些重构,或者使用某种桥梁。这是最糟糕的情况。

因此,正如我们所看到的,Hibernate支持几个工作流并为它们提供工具。就您而言,您正在寻找称为的工具 hbm2ddl (也称为 SchemaExport, ,这是实现它的类的名称)。有几种使用它的方法:

  • 你可以运行 SchemaExport 以编程方式。
  • 您可以在 SessionFactory 通过设置属性来创建时间 hibernate.hbm2ddl.auto 适当的价值
  • 您可以使用 <hbm2ddl> 蚂蚁任务

参考

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top