hibernate.cfg.xml 中hibernate.hbm2ddl.auto配置节点如下:
<properties>
<property name="hibernate.show_sql" value="true" /><wbr><wbr><wbr><wbr><wbr><br style="line-height:normal">
<property name="hibernate.hbm2ddl.auto" value="create" /><br style="line-height:normal">
</properties></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.hbm2ddl.auto**: 自动管理数据库模式的策略,如`create`(每次启动时创建新表)、`update`(更新现有表结构)、`validate`(验证模式是否匹配,不作任何修改)等。 ### 3. 示例配置 以MySQL为例,一...
- `hbm2ddl.auto` 属性控制Hibernate如何管理数据库模式。常用的值有:`create`(每次启动时重新创建表)、`update`(更新现有表结构)等。 #### 6. **缓存配置** - `cache` 元素用于配置Hibernate的一级或二级...
- 其他属性如`hibernate.connection.autocommit`、`hibernate.max_fetch_depth`、`hibernate.hbm2ddl.auto`和`hibernate.show_sql`也应根据实际需求进行调整。 接下来,需要在jbpm-installer目录下的standalone....
6. **SchemaExport工具**:`org.hibernate.tool.hbm2ddl.SchemaExport`工具可用于根据`.hbm.xml`文件自动生成数据库表结构,简化了数据库初始化和维护工作。 #### 实践步骤详解 - **环境搭建**:首先,需确保已...
- 在`hibernate.cfg.xml`配置文件中设置数据库连接信息,并将`hibernate.hbm2ddl.auto`设置为`create`,重启Tomcat即可根据映射文件生成数据库表。 #### 三、逆向工程 逆向工程则是指从已有的数据库表结构出发,...
- `hibernate.hbm2ddl.auto`属性可以设置为`create-drop`,这样在部署和卸载时会自动创建和删除相应的数据库表。 4. **实体Bean注解** - 类级别的注解: - `@Entity`:标记类为实体Bean。 - `@Table(name=...
- **hibernate.hbm2ddl.auto**: 设置为 `create-drop` 表示每次部署应用时会自动创建表结构,并在应用关闭时删除这些表。若希望保留现有表数据,在部署实体Bean时可将该属性设置为 `none` 或 `update`。推荐使用 `...
- `hibernate.hbm2ddl.auto`:控制自动创建或更新数据库模式,如`update`表示在启动时更新数据库结构。 4. **映射文件配置**: - `<mapping resource="..."/>`:用于指定Hibernate映射文件的位置,如`...
这些表可以通过Hibernate的自动表结构生成策略(hibernate.hbm2ddl.auto属性)创建,或者手动执行SQL脚本。 **3. JBPM基础知识** 理解JBPM的基础概念至关重要,包括任务、事件、工作流实例等。流程定义文件(jpdl)...
同时,通过设置`hibernate.hbm2ddl.auto`属性为`update`,可以确保数据库结构与JBPM模型保持同步。 ### 发布与管理流程定义 当流程设计完成且所有依赖已就绪时,就可以通过JBPM的RepositoryService来发布流程定义...
首先,`hbm2ddl.auto`参数是Hibernate配置中的一个重要选项,它决定了数据库表的生命周期。当设置为`create-drop`时,每次应用程序启动时,Hibernate会根据映射文件创建数据库表,然后在关闭时删除这些表,确保始终...
<property name="hibernate.hbm2ddl.auto">update <property name="hibernate.show_sql">true <mapping resource="cn/itcast/crm/domain/SysUserGroup.hbm.xml"/> * 测试.放置在junit包...
例如,`hibernate.hbm2ddl.auto`的值为`create-drop`,表示在实体Bean发布及卸载时将自动创建及删除相应数据表。 #### 五、实体Bean的元数据注解 在实体Bean中,元数据注解用于提供关于实体类及其属性的信息。 - *...