zoukankan      html  css  js  c++  java
  • Hibernate配置文件的hbm2ddl.auto属性

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

    我的Hibernate配置文件:

    <hibernate-configuration>
        <session-factory>
            <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
            <property name="hibernate.show_sql">true</property>
            <property name="hbm2ddl.auto">create</property>
        </session-factory>
    </hibernate-configuration>

    问题就出在我把hbm2ddl.auto的值设为create了,根据Hibernate的文档,hbm2ddl.auto有四个可选值:

    定义
    update 最常用的值,第一次加载hibernate时根据model类会自动建立起表的结构(前提是先建立好数据库),以后加载hibernate时根据 model类自动更新表结构,即使表结构改变了但表中的行仍然存在不会删除以前的行。要注意的是当部署到服务器后,表结构是不会被马上建立起来的,是要等 应用第一次运行起来后才会
    validate 每次加载hibernate时,验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值
    create 每次加载hibernate时都会删除上一次的生成的表,然后根据你的model类再重新来生成新表,哪怕两次没有任何改变也要这样执行
    create-drop 每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除

    如果你不确定如何设置这个值的话,就设置为“none”吧。

  • 相关阅读:
    cors
    js 离开页面
    移动端 touch
    eclipse
    java获取classpath以外的路径
    Javascript类型转换的规则
    myeclipse开发安装C++
    MyEclipse10中配置开发Python所需要的PyDev 绝对靠谱 不忽悠!
    POI生成EXCEL,公式不自动执行的有关问题
    POI中设置Excel单元格格式样式(居中,字体,边框等)
  • 原文地址:https://www.cnblogs.com/stonefeng/p/5758580.html
Copyright © 2011-2022 走看看