Hibernate初入门4--hbm2ddl

原创 2015年07月09日 00:45:39

在hibernate的配置文件中,存在如下一段代码!!

1 <!-- Drop and re-create the database schema on startup -->
2  <property name="hbm2ddl.auto">create/create-drop/update/validate</property>

在学习当中,完全不知道其中属性标签的值所代表的含义!!标签值有如下四种:

(1)create

(2)create-drop

(3)update

(4)validate

---------------------------------------------------------------------------------------

(1)当其中属性值为create时

1  <!-- Drop and re-create the database schema on startup -->
2  <property name="hbm2ddl.auto">create</property>

运行前:

运行结果如下:

分析可知:当参数为create时,hibernate将会作出判断,判断是否存在需要操作的表。如果存在则将表删除再重新创建,否则则直接创建。(之所以存在Student、Teacher表是因为在实验前,已在配置文件中添加了Student、Teacher的映射,所以会对Student、Teacher表做操作)

运行后:

(2)当属性值为Create-drop时,测试结果如下(先将Employee表删除)

运行前:

运行结果:

分析可知:create-drop与create具有相同特性,在运行时都会检测数据库中是否存在需要操作的表,如果存在则删除重建,不存在则直接新建;

但通过显示数据库中的表可知,在程序运行结束后,前面所重建或新建的表也会随着程序结束而被删除。

运行后:

(3) 当属性值为update时

运行前:

运行结果如下:

运行后:

分析可知:当数据库中不存在需要操作的表时,hibernate会自动创建此表。

当增加一个属性wage 时(即添加一个字段)

运行结果:

运行后:

分析可知:当数据库中存在需要操作的表时,hibernate不会将原表删除。由新增加字段可知,之前插入的信息未被删除,所以可知当数据库中存在需要操作的表时,hibernate不会将其删除,只是在原表的基础上修改。

当减少一个字段并修改另一字段类型时

运行结果:

运行后:

分析可知:当删除字段时,新插入的数据不具备已删除字段,在表中以null形式表示只是为了不影响之前插入的数据,故在此字段上显示为null(通过select * from employee where branch=""; 结果可以得出),即删除字段时所插入的数据不具备所删除的字段。

分析可知:当插入数据时,数据表仍具备删除的字段,因而再后续插入数据的过程中,需要加入删除的字段。


分析可知:修改字段类型时所插入的数据与原数据存在字符相同时,通过查找方式无法找出。

但是,问题又来了,如下测试!!又与此结论不同了,求高手解释!!

最终结论:只是根据映射文件去和数据库中的表对应起来,如果不一致,就更新表的结构,所以出现如此之多的前后矛盾。

当属性值为validate时

运行后:

分析:坑爹,解释不了了!!!求看到的大婶解释解释!!目测跟update的很像。

别人的结论:校验映射文件和数据库中的表是不是能对应起来,不能对应报错,实际中常用(没看懂)

hibernate.hbm2ddl.auto属性详解

  • 2013年04月15日 09:33
  • 553B
  • 下载

hibernate.hbm2ddl.auto配置详解

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

hibernate.hbm2ddl.auto 配置项介绍

Hibernate部分配置项解析

hibernate.hbm2ddl.auto含义介绍

简要介绍了hibernate.hbm2ddl.auto的基本用法和含义

Hibernate的hbm2ddl.auto=update的内幕

在使用Hibernate的时候我们一般都会配置hibernate.hbm2ddl.auto这个属性,而其中的常见的属性值包括: create create-drop validate update 而...

Hibernate:hbm2ddl.auto

Hibernate:hbm2ddl.auto

hibernate.hbm2ddl.auto 的设置

root jdbc:

hibernate.hbm2ddl.auto节点配置

hibernate.hbm2ddl.auto节点配置http://zdq0426.blog.163.com/blog/static/22169094201012210267665/
  • WYZSC
  • WYZSC
  • 2011年03月30日 17:11
  • 659

hibernate.hbm2ddl.auto的值的解释和配置

create:表示启动的时候先drop,再create create-drop: 也表示创建,只不过再系统关闭前执行一下drop update: 这个操作启动的时候会去检查schema是否一致,如果不...

hibernate.hbm2ddl.auto参数说明

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: properties>            property name="hibernate....
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate初入门4--hbm2ddl
举报原因:
原因补充:

(最多只允许输入30个字)