hibenate.hbm2ddl.auto属性详解(转载)
来源:互联网 发布:江海大智慧软件下载 编辑:程序博客网 时间:2024/05/21 17:56
hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:
<properties>
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.hbm2ddl.auto" value="create" />
</properties>
Hibernate Reference Documentation 3.3.1解释如下:
Automatically validate or export schema DDL to the database when the SessionFactory is created.
With create-drop, the database schema will be dropped when the SessionFactory is closed explicitly.
eg. validate | update | create | create-drop
其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。
再说点“废话”:
当我们把hibernate.hbm2ddl.auto=create时hibernate先用hbm2ddl来生成数据库schema。
当我们把hibernate.cfg.xml文件中hbm2ddl属性注释掉,这样我们就取消了在启动时用hbm2ddl来生成数据库schema。通常只有在不断重复进行单元测试的时候才需要打开它,但再次运行hbm2ddl会把你保存的一切都删除掉(drop)---- create配置的含义是:“在创建SessionFactory的时候,从scema中drop掉所以的表,再重新创建它们”。
注意,很多Hibernate新手在这一步会失败,我们不时看到关于Table not found错误信息的提问。但是,只要你根据上面描述的步骤来执行,就不会有这个问题,因为hbm2ddl会在第一次运行的时候创建数据库schema,后续的应用程序重启后还能继续使用这个schema。假若你修改了映射,或者修改了数据库schema,你必须把hbm2ddl重新打开一次。
转自:http://hi.baidu.com/winterhome/blog/item/f7f25601174554087bec2cf9.html
- hibenate.hbm2ddl.auto属性详解(转载)
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- hibenate.hbm2ddl.auto属性详解
- Hibernate下的hibenate.hbm2ddl.auto属性详解
- hbm2ddl.auto 属性
- hbm2ddl.auto属性详解(hibernate自动建表)
- 关于hibernate.hbm2ddl.auto 属性
- hibernate hibernate.hbm2ddl.auto属性
- 【hibernate】配置hbm2ddl.auto属性
- hibernate.hbm2ddl.auto配置详解
- hibernate.hbm2ddl.auto配置详解
- 字符串处理
- 连接目标数据库(oracle)时,遇到了1521端口不给开放的问题,绕道从jboss和ejb解决了这个问题。
- Android高手进阶教程(九)之----Android Handler的使用!!!
- 网站提交搜索引擎
- RFC 3550导读#1 概述,定义
- hibenate.hbm2ddl.auto属性详解(转载)
- 外部四面体网格导入Ansys等软件
- JDK1.5 和 JDK1.6 的一点小区别 @Override
- windows 开发技术
- 呵呵 我的新浪博客也开通了
- ewrewrwe
- 开关电源输出纹波的测量和抑制
- Java编程思想 第4版 练习题 / 第22章 图形化用户界面 / 练习28
- 编程, 阅读程序, Java,开源