hibernate.hbm2ddl.auto设置成update的问题

时间:2021-07-05 08:20:35

 

在 spring 与hibernate 结合时:

 hibernate.hbm2ddl.auto有好几个设置值,其中就有update 这个值也是比较常用的,但是设置这个值可能会有一些问题出现。

所以,了解一下它是有必要的。

        经过我自己的实验结果,hibernate.hbm2ddl.auto 如果设置成 update ,每次应用运行起来时,它会提供一种hibernate正向工程的机制,为你

自动建表而不是手工建立,这也是它被经常被作为设置值使用的原因所在。但是同时,hibernate.hbm2ddl.auto 在设置成update后,如果你在原先的

entity中加了一个属性后,我们期望的是数据库表结构也变化成为比原先的表增加了一个字段,即entity中新增属性对应的数据库表字段。正如你期望

的那样,在应用重新启动时,他会这样做。

         那我们来看看他带来的问题,试着进行这样的操作,修改原先entity中某一属性名完成对应 setter 和 getter , 这时理想的期望是,数据库表结

构中原先相对应的字段也会随着修改(此处的前提是: 进行数据库表映射时,使用数据库产品默认字段名),它不能完成插入操作,但是,数据库表

中会新增一个字段(其值是DB默认值)来对应你修改后的entity属性,而此属性修改前对应的字段数据库字段还存在(值也在);而删除entity某一

属性时,我们期望应用重启后,对应字段也“消失”,但是事与愿违,不会这样,你如果进行插入操作会失败,数据库表结构(和字段值)不变即不会

删除对应字段。

(有问题有其他见解的欢迎交流讨论!!)