`
webcode
  • 浏览: 6109969 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

hibernate.hbm2ddl.auto节点配置

 
阅读更多
hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:
<properties>
<property name="hibernate.show_sql" value="true" /><wbr><wbr><wbr><wbr><wbr><br style="line-height:normal"> &lt;property name="hibernate.hbm2ddl.auto" value="create" /&gt;<br style="line-height:normal"> &lt;/properties&gt;</wbr></wbr></wbr></wbr></wbr>

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

<wbr></wbr>


其实这个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重新打开一次。

分享到:
评论

相关推荐

    hibernate 与 各种数据库连接配置

    - **hibernate.hbm2ddl.auto**: 自动管理数据库模式的策略,如`create`(每次启动时创建新表)、`update`(更新现有表结构)、`validate`(验证模式是否匹配,不作任何修改)等。 ### 3. 示例配置 以MySQL为例,一...

    hibernate配置文件

    - `hbm2ddl.auto` 属性控制Hibernate如何管理数据库模式。常用的值有:`create`(每次启动时重新创建表)、`update`(更新现有表结构)等。 #### 6. **缓存配置** - `cache` 元素用于配置Hibernate的一级或二级...

    jbpm_jboss+oracle

    - 其他属性如`hibernate.connection.autocommit`、`hibernate.max_fetch_depth`、`hibernate.hbm2ddl.auto`和`hibernate.show_sql`也应根据实际需求进行调整。 接下来,需要在jbpm-installer目录下的standalone....

    用Hibernate3.1实现XML和数据库的同步

    6. **SchemaExport工具**:`org.hibernate.tool.hbm2ddl.SchemaExport`工具可用于根据`.hbm.xml`文件自动生成数据库表结构,简化了数据库初始化和维护工作。 #### 实践步骤详解 - **环境搭建**:首先,需确保已...

    hibernate正向工程和逆向工程

    - 在`hibernate.cfg.xml`配置文件中设置数据库连接信息,并将`hibernate.hbm2ddl.auto`设置为`create`,重启Tomcat即可根据映射文件生成数据库表。 #### 三、逆向工程 逆向工程则是指从已有的数据库表结构出发,...

    个人整理的EJB3中的注释

    - `hibernate.hbm2ddl.auto`属性可以设置为`create-drop`,这样在部署和卸载时会自动创建和删除相应的数据库表。 4. **实体Bean注解** - 类级别的注解: - `@Entity`:标记类为实体Bean。 - `@Table(name=...

    Entity_Bean

    - **hibernate.hbm2ddl.auto**: 设置为 `create-drop` 表示每次部署应用时会自动创建表结构,并在应用关闭时删除这些表。若希望保留现有表数据,在部署实体Bean时可将该属性设置为 `none` 或 `update`。推荐使用 `...

    基于Hibernate中配置文件的学习(分享)

    - `hibernate.hbm2ddl.auto`:控制自动创建或更新数据库模式,如`update`表示在启动时更新数据库结构。 4. **映射文件配置**: - `&lt;mapping resource="..."/&gt;`:用于指定Hibernate映射文件的位置,如`...

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合

    这些表可以通过Hibernate的自动表结构生成策略(hibernate.hbm2ddl.auto属性)创建,或者手动执行SQL脚本。 **3. JBPM基础知识** 理解JBPM的基础概念至关重要,包括任务、事件、工作流实例等。流程定义文件(jpdl)...

    jbpm工作流技术PPT

    同时,通过设置`hibernate.hbm2ddl.auto`属性为`update`,可以确保数据库结构与JBPM模型保持同步。 ### 发布与管理流程定义 当流程设计完成且所有依赖已就绪时,就可以通过JBPM的RepositoryService来发布流程定义...

    Hibernate配置文件[文].pdf

    首先,`hbm2ddl.auto`参数是Hibernate配置中的一个重要选项,它决定了数据库表的生命周期。当设置为`create-drop`时,每次应用程序启动时,Hibernate会根据映射文件创建数据库表,然后在关闭时删除这些表,确保始终...

    客户关系管理系统框架搭建(二)

    &lt;property name="hibernate.hbm2ddl.auto"&gt;update &lt;property name="hibernate.show_sql"&gt;true &lt;mapping resource="cn/itcast/crm/domain/SysUserGroup.hbm.xml"/&gt; * 测试.放置在junit包...

    EJB中的注释.pdf

    例如,`hibernate.hbm2ddl.auto`的值为`create-drop`,表示在实体Bean发布及卸载时将自动创建及删除相应数据表。 #### 五、实体Bean的元数据注解 在实体Bean中,元数据注解用于提供关于实体类及其属性的信息。 - *...

Global site tag (gtag.js) - Google Analytics