我真的想知道更多有关更新,导出和可以提供给hibernate.hbm2ddl.auto
我需要知道何时使用更新的值的更多信息,何时不知道?还有什么选择?
这些是可能发生在DB上的变化:
在每种情况下,最佳解决方案是什么?
Jam*_*hon 1040
来自社区文档:
hibernate.hbm2ddl.auto创建SessionFactory时,自动验证或将架构DDL导出到数据库.使用create-drop,当SessionFactory显式关闭时,将删除数据库模式.
例如验证| 更新| 创建| 创建降
所以可能的选项列表是,
这些选项似乎是开发人员工具,而不是为了促进任何生产级数据库,您可能想要查看以下问题; Hibernate:hbm2ddl.auto =在生产中更新?
小智 190
还有"无"的无证值可以完全禁用它.
Pet*_*ton 157
调用配置属性 hibernate.hbm2ddl.auto
在我们的开发环境中,我们设置hibernate.hbm2ddl.auto=create-drop
为每次部署时都删除并创建一个干净的数据库,以便我们的数据库处于已知状态.
从理论上讲,您可以设置hibernate.hbm2ddl.auto=update
通过更改模型来更新数据库,但我不相信生产数据库.文档的早期版本说这至少是实验性的; 我不知道目前的状况.
因此,对于我们的生产数据库,请不要设置hibernate.hbm2ddl.auto
- 默认是不进行数据库更改.相反,我们手动创建一个SQL DDL更新脚本,该脚本将更改从一个版本应用到下一个版本.
ami*_*mit 44
虽然这是一个相当古老的帖子,但我对这个主题做了一些研究,所以想到分享它.
hibernate.hbm2ddl.auto
根据文档,它可以有四个有效值:
创建| 更新| 验证| 创建降
以下是对这些值所示行为的解释:
以下是值得注意的重点:
Table not found:<table name>
如果我给这个属性赋予任何值(比如abc,而不是上面讨论的上述四个值),或者它只是留空.它显示以下行为:
- 如果数据库中没有架构: - 它会创建架构
- 如果数据库中存在架构: - 更新架构.
小智 26
hibernate.hbm2ddl.auto
创建sessionFactory时,自动验证DDL并将其导出到架构.
默认情况下,它不会在DB上自动执行任何创建或修改.如果用户设置以下值之一,则它会自动执行DDL架构更改.
创建 - 创建模式
<entry key="hibernate.hbm2ddl.auto" value="create">
Run Code Online (Sandbox Code Playgroud)更新 - 更新现有架构
<entry key="hibernate.hbm2ddl.auto" value="update">
Run Code Online (Sandbox Code Playgroud)validate - 验证现有架构
<entry key="hibernate.hbm2ddl.auto" value="validate">
Run Code Online (Sandbox Code Playgroud)create-drop - 在会话开始和结束时自动创建和删除架构
<entry key="hibernate.hbm2ddl.auto" value="create-drop">
Run Code Online (Sandbox Code Playgroud)Ste*_*erl 17
如果您不想在应用程序中使用字符串并且正在查找预定义常量,请查看org.hibernate.cfg.AvailableSettings
Hibernate JAR中包含的类,您可以在其中找到所有可能设置的常量.以你的情况为例:
/**
* Auto export/update schema using hbm2ddl tool. Valid values are <tt>update</tt>,
* <tt>create</tt>, <tt>create-drop</tt> and <tt>validate</tt>.
*/
String HBM2DDL_AUTO = "hibernate.hbm2ddl.auto";
Run Code Online (Sandbox Code Playgroud)
小智 8
validate
:验证架构,数据库没有任何变化。update
:使用当前的执行查询更新架构。create
:每次创建新的架构,并销毁先前的数据。create-drop
:在停止应用程序或显式关闭SessionFactory时删除架构。我认为你应该专注于
SchemaExport Class
Run Code Online (Sandbox Code Playgroud)
这个类让你的配置变得动态所以它允许你选择你最好的套房......
归档时间: |
|
查看次数: |
968364 次 |
最近记录: |