Hibernate配置属性hibernate.hbm2ddl.auto
- 142 次检阅

最近团队同事在配置文件上用到了hibernate.hbm2ddl.auto,把配置文件下关联的bean对应的数据表给清空了,问题不算很严重影响也只是开发测试环境的数据,可是也需要自己记录下吧。虽然现在很多公司越来越少用到Hibernate.而转到Mybatis,但是自己现在维护开发的两个系统项目都用到hibernate,避免犯错误,因为恢复这几个表都弄了快一天..心累的底层开发仔...


前言

我们在本地作开发时或者项目刚开始时,经常会定义好实体,继而在相应的数据库中建表。而这样建表继烦琐,浪费时间,又容易出错。而这时候Hibernate的hibernate.hbm2ddl.auto配置项会帮助我们根据定义好的实体,自动创建,更新,验证数据库表...

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:

hibernate.hbm2ddl.auto有好几个属性项:

1.none(默认)

在Hiberante启动时,不会执行任何操作

2.create-only

在Hibernate启动时,对实体仅会执行建表语句,即使实体对应的表已经存在了,也会重复执行建表语句

3.drop

在Hiberante启动时,对实体对应的表执行删除语句,即使实体不存在对应的表,都会执行表删除语句

4.create

在Hiberante启动时,对实体对应的表执行删除语句,然后再执行建表语句

5.create-drop

在Hibernate启动时,对实体对应的表执行删除语句,然后执行建表语句。在Hibernate关闭时,实体对应的表执行删除语句

6.validate

对实体和对应的表进行校验

7.update

实体对应的表如果不存在则会创建。如果实体中新增加了字段,会在相应的表中增加一列

怎么多参数,以前学习Hibernate时候,自己用到就以下几个:

validate:每次加载hibernate时,验证创建数据库表结构

create:每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因

create-drop:每次加载hibernate时创建,退出则是删除表结构

update:每次加载hibernate时更新表,不存在则创建,省去了手动更新数据库表的麻烦(此时事故原因)

ps:hibernate.hbm2ddl.auto配置项会对这个配置文件下所有的映射表都起作用!!!!!(慎用)

总结

1.请慎重使用hibernate.hbm2ddl.auto,没必要就不要随便用

2.如果发现数据库表丢失,请检查配置了hibernate.hbm2ddl.auto

3.一般情况下都是使用validate或者update。 如果希望基于代码来构建数据库表结构,就可以使用update.其余的选项使用较少,尤其会删除掉数据库中的数据

分享到:
, ,

这篇文章有6条评论

  1. NO:2873 / 發布於 - 2018-12-5 #1 回复

    插入付款码做什么。

  2. qq
    NO:2876 / 發布於 - 2018-12-9 #2 回复

    邮箱测试

发表评论