我真的想知道更多关于更新,导出和值,可以给hibernate.hbm2ddl.auto 我需要知道什么时候使用更新,什么时候不?另一种选择是什么?
以下是在DB中可能发生的变化:
新表 旧表中的新列 列删除 事件解释列的数据类型发生变化 列的类型更改了其属性 表了 事件解释列值发生变化
在每种情况下,最佳解决方案是什么?
我真的想知道更多关于更新,导出和值,可以给hibernate.hbm2ddl.auto 我需要知道什么时候使用更新,什么时候不?另一种选择是什么?
以下是在DB中可能发生的变化:
新表 旧表中的新列 列删除 事件解释列的数据类型发生变化 列的类型更改了其属性 表了 事件解释列值发生变化
在每种情况下,最佳解决方案是什么?
当前回答
综上所述…… 注意,这个属性叫做dll。auto和应该只控制dll操作(创建/删除模式/表),我惊讶地发现它也与dml有关:只有更新将允许插入数据,这是dml操作。
在试图将数据填充到内存数据库时被此捕获;只有更新有效。
其他回答
给任何人搜索默认值…
它是在spring-boot 2.0.5版本和JpaProperties 1.1.0版本的源代码中编写的:
/**
* DDL mode. This is actually a shortcut for the "hibernate.hbm2ddl.auto"
* property. Defaults to "create-drop" when using an embedded database and no
* schema manager was detected. Otherwise, defaults to "none".
*/
private String ddlAuto;
如果你不想在你的应用程序中使用字符串,并正在寻找预定义的常量,请查看Hibernate JAR中包含的org.hibernate.cfg.AvailableSettings类,在那里你可以找到一个用于所有可能设置的常量。以你为例:
/**
* 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";
我觉得你应该集中精力
SchemaExport Class
这个类使你的配置动态 所以它可以让你选择你最喜欢的套间…
结帐 [架构导出]
综上所述…… 注意,这个属性叫做dll。auto和应该只控制dll操作(创建/删除模式/表),我惊讶地发现它也与dml有关:只有更新将允许插入数据,这是dml操作。
在试图将数据填充到内存数据库时被此捕获;只有更新有效。
我会使用liquibase来更新您的数据库。Hibernate的模式更新特性实际上只适用于开发新特性的开发人员。在生产环境中,需要更谨慎地处理db升级。