Hibernate hbm2ddl.auto可能的值和他们做什么?

我真的想知道更多关于更新,导出和可以给hibernate.hbm2ddl.auto的值
我需要知道何时使用更新,何时不使用? 什么是替代方案?

这些是可能发生在数据库上的变化:

  • 新表格
  • 旧表中的新列
  • 已删除列
  • 列的数据类型已更改
  • 一列的类型改变了它的属性
  • 表已被删除
  • 列的值已更改
  • 在每种情况下,最好的解决方案是什么?


    从社区文档:

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

    例如验证| 更新| 创建| 创建降

    所以可能的选项列表是,

  • 验证:验证架构,不更改数据库。
  • 更新:更新架构。
  • 创建:创建模式,破坏以前的数据。
  • create-drop:在SessionFactory被显式关闭时,通常在应用程序停止时,删除模式。
  • 这些选项似乎是要成为开发人员的工具,而不是为了方便任何生产级别的数据库,您可能需要查看以下问题; 休眠:hbm2ddl.auto =生产中更新?


    还有“无”的无证价值完全禁用它。


    配置属性称为hibernate.hbm2ddl.auto

    在我们的开发环境中,我们设置了hibernate.hbm2ddl.auto=create-drop以在每次部署时删除并创建一个干净的数据库,以便我们的数据库处于已知状态。

    理论上,您可以设置hibernate.hbm2ddl.auto=update来更新您的数据库,并对模型进行更改,但我不会相信生产数据库。 早期版本的文件表示这至少是实验性的; 我不知道目前的状况。

    因此,对于我们的生产数据库,请勿设置hibernate.hbm2ddl.auto - 默认情况下不进行数据库更改。 相反,我们手动创建一个SQL DDL更新脚本,将更改从一个版本应用到下一个版本。

    链接地址: http://www.djcxy.com/p/18769.html

    上一篇: Hibernate hbm2ddl.auto possible values and what they do?

    下一篇: Java: Why is the Date constructor deprecated, and what do I use instead?