记忆角落

  • {{ item.name }}
  • 前言
  • 总结
  • 首页
  • 关于
  • 归档
  • 邻居
  • 捐赠

Hibernate配置属性hibernate.hbm2ddl.auto

  • 郭良俊只狗
  • 2018-12-05
  • 0

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


前言

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

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

<properties>   
  <!-- 没有必要的话,最好注销此函数 -->
  <property name="hibernate.hbm2ddl.auto" value="create" />
</properties>

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.其余的选项使用较少,尤其会删除掉数据库中的数据

© 2012 - 2023 记忆角落 网站统计
Theme by Wing
粤ICP备14056850号-1 又拍云CDN赞助