1

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

4

2 回答 2

1

是的,有一个属性hibernate.hbm2ddl.auto文档说:

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

例如验证 | 更新 | 创建 | 创建删除

有多种方法可以定义此属性,具体取决于您如何配置SessionFactory. 休眠方式是简单地添加:

<property name="hibernate.hbm2ddl.auto">update</property>
于 2010-09-09T06:40:37.360 回答
1

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

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

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

  • 自下而上: 您从现有数据库开始,并使用hbm2hbmxml和从数据库模式生成映射和 Java 类(或只是带注释的 Java 类) hbm2java

  • 中间:您开始编写 Hibernate XML 映射并分别使用 和 生成 DDL 和 Javahbm2ddlhbm2java

  • 在中间相遇:您有一个现有的 Java 模型和一个现有的数据库。Hibernate 工具在这里帮不上什么忙,您很可能不得不手动编写映射并对数据库或 Java 代码进行一些重构,或者使用某种桥接器。这是最坏的情况。

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

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

参考

于 2010-09-09T08:07:59.423 回答