hibernate配置hbm2ddl.auto的四个参数

<!-- Drop and re-create the database schema on startup -->
        <!-- hbm(hibernatemapping) ,ddl(建表语句。是否自动生成建表语句)-->
        <property name="hbm2ddl.auto">validate</property> 

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构。如果不是此方面的需求建议set value="none"。
create:
每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除。
update:
最常用的属性,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会。
validate :
每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值。

插入新值,当数据库没有该表时不会自动创建,会报异常: Missing table: TableName

时间: 2025-01-01 16:41:33

hibernate配置hbm2ddl.auto的四个参数的相关文章

Hibernate配置文件的hbm2ddl.auto属性

今天遇到一个有意思的问题,我目前做的一个网站采用Spring MVC + Spring + Hibernate的架构,我通过页面插入了一些数据到数据库,可是每次重启tomcat之后,数据都莫名其妙地丢失了,但是我确定数据库中原本是有数据的,数据一定是在应用服务器重启之后被清除的,百思不得其解,忽然想到有可能是昨天修改了Hibernate配置文件导致的. 我的Hibernate配置文件: <hibernate-configuration> <session-factory> <

Hibernate_配置参数hibernate.hbm2ddl.auto

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties>           <property name="hibernate.show_sql" value="true" />                 <property name="hibernate.hbm2ddl.auto" value="create" />&

Mingyang.net:hibernate.hbm2ddl.auto配置详解【转】

原文地址:http://www.cnblogs.com/feilong3540717/archive/2011/12/19/2293038.html hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下: <properties> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.

hibernate.hbm2ddl.auto配置详解

hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:<properties><property name="hibernate.show_sql" value="true" /> <property name="hibernate.hbm2ddl.auto" value="create" /></properties> Hibernat

hibernate配置之&lt;property name=&quot;hbm2ddl.auto&quot;&gt;create&lt;/property&gt;导致每次创建SessionFactory都清空数据库中的数据

参考:http://stackoverflow.com/questions/6611437/how-to-make-hibernate-not-drop-tables 我遇到的问题就是: List l = sess.createCriteria(News.class) .add( Restrictions.isNotEmpty("title")) .list(); 抛出异常,Exception in thread "main" org.hibernate.Mappi

[转] Hibernate不能自动建表解决办法(hibernate.hbm2ddl.auto) (tables doesn&#39;t exist)

转自: http://blog.csdn.net/biangren/article/details/8010018 最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且在mysql中新建了一个hibernate数据库,仅此而已.然而预想不到的事情发生了……程序写好之后,运行,报错 Hibernate: insert into news_table (title

hibernate配置文件中&quot;hbm2ddl.auto&quot;属性的用法

hibrenate配置中有一个“hbm2ddl.auto”的属性,它表示hibernate数据表自动创建的策略 1.create:根据*.hbm.xml配置来生成数据表,每次运行都会删除上次生成的表,即使没有任何改变 2.create-drop:生成数据表,每次SessionFactory关闭时删除表结构 3.update:最常用的取值,如果数据表的结构改变了,hibernate会将改变的列添加进来,并不删除之前的列 4.Validate:会将*.hbm.xml中的对象结构和数据表中的结构进行比

如何取消hibernate hbm2ddl.auto 自动创建外键

利用hbm2ddl自动创建数据库表时,会同时创建表的外键关联.配置如下. <prop key="hibernate.hbm2ddl.auto">create</prop> 要取消外键的自动创建,需要配置foreign-key="none". hibernate的更新log有如下说明: Changes in version 2.1.9 (xx.x.xxxx) ------------------------------------ * fore

hibernate.hbm2ddl.auto的值

其实这个hibernate.hbm2ddl.auto参数的作用主要用于:自动创建|更新|验证数据库表结构.如果不是此方面的需求建议set value="none".create:每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行,这就是导致数据库表数据丢失的一个重要原因.create-drop :每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除.upda