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

 

在 spring 与hibernate 结合时:

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

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

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

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

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

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

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

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

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

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

删除对应字段。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值