`

Hibernate中的hibernate.hbm2ddl.auto

阅读更多

      这两天学习EJB3的相关知识,在学习JPA相关知识的时候,发现一个奇怪的现象,我的数据库表莫名其妙的丢失或者数据表中的数据莫名其妙的丢失。在网上查了很多资料才发现原来是persistence.xml中的这句话的问题。

 

<properties>
	<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>

 

 

     也就是hibernate.hbm2ddl.auto这个属性在捣鬼,现在给出解释。

     hibernate.hbm2ddl.auto 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

其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构。建议value="none"。

详细如下:

validate                加载hibernate时,验证创建数据库表结构。

create                   每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。

create-drop          加载hibernate时创建,退出是删除表结构

update                 加载hibernate自动更新数据库结构

      我最开始的value=create-drop。也就是在停止该EJB工程的时候,执行了drop操作,所以数据表都没了,只剩下一个空空的数据库。之后EJB工程重新部署的时候,容器Jboss根据实体Bean重新创建了相应的数据表,因此我们看到的就是数据表还在,但是数据没了。那是因为数据表被重建了,所以当然数据没了,数据表删了又重建,所以还在。所以你还会发现,在数据表自增长的字段如自增型主键,又从初始值,如mysql从1开始生成主键了。

分享到:
评论

相关推荐

    hibernate.hbm2ddl.auto属性详解

    详解hibernate.hbm2ddl.atuo 属性的配置

    hibernate3 配置hbm2ddl和hbm2java所需jar

    要使用hbm2ddl,你需要在Hibernate配置文件(如hibernate.cfg.xml)中启用auto-import属性,并指定对应的schema更新策略。 2. hbm2java: hbm2java工具则将Hibernate的映射文件转换为Java实体类。这些实体类是与...

    详解hibernate自动创建表的配置

    首先,我们要关注的关键配置项是`hibernate.hbm2ddl.auto`。这个属性决定了Hibernate在启动时如何处理数据库的元数据,即表结构。以下四个值是它可能的取值: 1. **update**:这是最常用的设置,当设置为`update`时...

    Hibernate常用操作示例

    Hibernate常用操作示例,包含详细注释说明,数据库初始化文件。使用和学习请参考:http://blog.csdn.net/daijin888888/article/details/51692942

    hbm2ddl属性hbm2ddl属性

    &lt;property name="hibernate.hbm2ddl.auto"&gt;create ``` 这样,每当应用程序启动时,Hibernate都会检查`User`实体类并自动创建名为`users`的表。 2. **更改实体类**:如果我们决定为`User`实体添加一个新的字段`...

    hibernate.cfg.xml文件

    5. **hibernate.hbm2ddl.auto**:此属性决定了Hibernate在启动时如何处理数据库模式。例如,`create`表示每次启动时都创建新表,`update`则更新已有表结构,`validate`验证表结构是否匹配,`none`则不做任何操作。 ...

    hibernate--5.Hibernate配置文件详解-2

    &lt;property name="hibernate.hbm2ddl.auto"&gt;update ``` 这个属性可以设置为`create`、`create-drop`、`update`或`validate`,根据项目的需要调整。 最后,文件还会包含SessionFactory的创建,这是Hibernate的核心...

    hibernate_reference1.rar_配置文件

    - `&lt;property name="hibernate.hbm2ddl.auto"&gt;`: 自动创建、更新或验证数据库表结构,如`create-drop`、`update`等。 在实际开发中,开发者可以根据项目需求调整这些配置,以实现最佳性能和功能。例如,生产环境中...

    javaee 书上的Customer程序

    怎样运用Hibernate hibernate.dialect=org.hibernate.dialect.SQLServerDialect hibernate.connection.driver_class=... hibernate.hbm2ddl.auto=create hibernate.show_sql=true

    Spring3+hibernate4+Struts2图书管理系统

    2.修改applicationContext.xml文件中hibernate.hbm2ddl.auto的值为create而不是update 3.修改数据库的连接信息(数据库,用户名,密码) 4.部署到Tomcat服务器上面,然后运行 5.在浏览器中输入...

    hibernate.properties

    #hibernate.hbm2ddl.auto create-drop #hibernate.hbm2ddl.auto create #hibernate.hbm2ddl.auto update #hibernate.hbm2ddl.auto validate ## specify a default schema and catalog for unqualified tablenames ...

    oracle的hibernate配置文件

    `hibernate.hbm2ddl.auto`控制数据库表的自动管理,`update`表示在启动时更新数据库结构。`hibernate.show_sql`开启后,Hibernate会打印执行的SQL语句。 3. SessionFactory配置: SessionFactory是Hibernate的...

    hibernate325ga+struts2011+spring25实现crud

    部署时,可修改web-inf/config/spring/applicationContext.xml文件,修改相应的数据库信息,把把&lt;prop key="hibernate.hbm2ddl.auto"&gt;update 改为&lt;prop key="hibernate.hbm2ddl.auto"&gt;create即可自动创建表 我自己写的...

    Hibernate3所有包和配置文件

    - `hibernate.hbm2ddl.auto`: 自动创建、更新或验证数据库表结构,常用于开发环境。 5. **使用流程**: - 创建实体类并编写.hbm.xml映射文件。 - 配置hibernate.cfg.xml,设定数据库连接信息。 - 初始化...

    Hibernate.cfg.xml常用配置总结.pdf

    3. **Hbm2ddl.auto**: 这个属性决定了 Hibernate 如何自动管理数据库的元数据。有以下几种模式: - `create`: 每次启动应用时,Hibernate 会删除现有的表并重新创建它们,这会导致数据丢失。 - `update`: ...

    ssh项目中hbm2dll和hbm2java的使用

    在SSH(Spring、Struts和Hibernate)项目中,`hbm2dll`和`hbm2java`是Hibernate工具的一部分,用于自动化数据库映射过程。这两个工具极大地简化了开发过程,尤其是在处理对象关系映射(ORM)时。下面将详细解释这两...

    hibernate完整配置文件

    7. `hbm2ddl.auto`: 自动处理数据库表的策略,可选`create`、`create-drop`、`update`或`validate`。 除了核心配置文件外,Hibernate还需要实体类的映射文件(通常以`.hbm.xml`为扩展名),这些文件定义了Java类与...

    Hibernate开发jar包

    &lt;property name="hibernate.hbm2ddl.auto"&gt;update &lt;!-- 配置C3P0的连接池 --&gt; &lt;property name="connection.provider_class"&gt;org.hibernate.connection.C3P0ConnectionProvider &lt;!-- 映射配置文件 -...

    Hibernate自动创建表结构示例--Oracle

    标题"Hibernate自动创建表结构示例--Oracle"表明我们将使用Hibernate在Oracle数据库中自动生成表结构,这是通过Hibernate的`hibernate.hbm2ddl.auto`配置属性实现的。这个属性可以设置为"create"、"update"、...

    HibernateTools-3.2.0.GA

    1. **逆向工程(Reverse Engineering)**:Hibernate Tools可以从现有的数据库模式自动生成对应的Java持久化类(POJOs),Entity Beans,以及Hibernate的配置文件(hbm.xml)。这大大减少了手动编写这些代码的工作量...

Global site tag (gtag.js) - Google Analytics