`
jayghost
  • 浏览: 446361 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

hibernate使用数据库中表字段的默认值

    博客分类:
  • Java
 
阅读更多

Hibernate允许我们在映射文件里控制insert和update语句的内容.比如在映射文件中<property 元素中的update属性设置成为false,那么这个字段,将不被包括在基本的update语句中,修改的时候,将不包括这个字段了.insert同理.dynamic动态SQL语句的配置也是很常用的.下面介绍配置SQL语句的具体属性:
      1)<property>元素 insert属性:设置为false,在insert语句中不包含这个字段,表示永远不会被插入,默认true
      2)<property>元素 update属性:设置为false,在update语句中不包含这个字段,表示永远不会被修改,默认true
      3)<class>元素 mutable属性:设置为false就是把所有的<property>元素的update属性设置为了false,说明这个对象不会被更新,默认true
      4)<property>元素 dynamic-insert属性:设置为true,表示insert对象的时候,生成动态的insert语句,如果这个字段的值是null就不会加入到insert语句当中.默认false
      5)<property>元素 dynamic-update属性,设置为true,表示update对象的时候,生成动态的update语句,如果这个字段的值是null就不会被加入到update语句中,默认false
      6)<class>元素 dynamic-insert属性:设置为true,表示把所有的<property>元素的dynamic-insert属性设置为true,默认false
      7)<class>元素 dynamic-update属性:设置为true,表示把所有的<property>元素的dynamic-update属性设置为true,默认false

      Hibernate生成动态SQL语句的消耗的系统资源(比如CPU,内存等)是很小的,所以不会影响到系统的性能,如果表中包含N多字段,建议把dynamic-update属性和insert属性设置为true,这样在插入和修改数据的时候,语句中只包括要插入或者修改的字段.可以节省SQL语句的执行时间,提高程序的运行效率.

问题描述:
     hibernate技术中对应数据库中每一个表,都会有一个映射文件与之对应,此文件描述数据库表中每一个字段的类型、长度、是否可空等属性。在进行表中记录的插入(更新)操作时,hibernate会根据映射文件中的描述自动生成一个包含所有字段的插入(更新)sql语句,此时如果映射文件中某字段的值为空(NULL)而其在数据库表中定义的默认值不为空,hibernate会将空值插入到表中,而不会使用此字段的默认值。

解决方法:
     在hibernate映射文件对数据库表的描述中,加入dynamic-insert="true"和 dynamic-update="true" 语句,这时hibernate在进行插入(更新)操作时,只会为那些值不为空的字段赋值,而值为空的字段就会使用数据库表中定义的默认值了。

分享到:
评论

相关推荐

    hibernate实体映射文件字段设置默认值

    在Hibernate框架中,实体映射文件(通常为`.hbm.xml`)用于定义Java对象与数据库表之间的映射关系。这其中包括了属性到数据库表列的映射、主键生成策略、以及一些高级特性如延迟加载等。在某些情况下,我们可能希望...

    Hibernate 多数据库支持解决方案

    这可以通过在实体类中使用Hibernate的`@ManyToOne`, `@OneToOne`, `@OneToMany`等注解来控制关联,而不是依赖于数据库的外键约束。 2. **动态加载.hbm.xml文件** - Hibernate允许通过配置文件来动态加载对应当前...

    java使用hibernate操作数据库jar

    Java使用Hibernate操作数据库是现代Java应用中常见的技术实践,Hibernate作为一个强大的对象关系映射(ORM)框架,极大地简化了数据库的交互。它允许开发者用Java对象来表示数据库中的记录,而无需关心底层SQL的实现...

    hibernate连接金仓数据库所需jar包集合lib.7z

    在Java开发中,Hibernate是一个非常流行的ORM(对象关系映射)框架,它允许开发者通过Java对象来操作数据库,极大地简化了数据库操作。金仓数据库,又称为Kingbase,是一款国产的高性能、高可靠性的关系型数据库管理...

    hibernate动态数据库进化版

    在传统的Hibernate使用中,通常会预定义一些ORM映射文件或注解来固定数据库表的映射关系,但这在应对多变的业务需求和多种数据库环境时显得不够灵活。动态数据库进化版的目的是打破这种局限,使Hibernate能够根据...

    Hibernate配置数据库连接

    配置数据库连接是使用 Hibernate 进行数据库操作的基础步骤。正确地配置数据库连接不仅能够确保应用程序能够顺利访问数据库,还能够提高程序的运行效率。此外,合理的配置还可以帮助我们更好地管理数据库资源,减少...

    hibernate数据库相关操作步骤

    Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的简便方法。通过使用Hibernate,开发人员可以避免直接编写SQL语句,而是通过面向对象的方式来管理和操作数据。本文将...

    hibernate中所有数据库方言

    在探讨Hibernate中所有数据库方言之前,我们先简要回顾一下Hibernate框架本身。Hibernate是一个开源的对象关系映射(ORM)框架,用于Java应用与各种关系型数据库进行交互。它提供了强大的功能,如对象持久化、查询...

    Hibernate 显示数据库数据

    本教程针对初学者,将介绍如何使用Hibernate从数据库中查询并显示数据。 【描述】"适合初学者使用。使用Hibernate做查询数据库,代码为eclipse项目,直接导入即可使用,只供参考。" 对于初学者,理解并应用...

    自定义生产数据表字段说明文档

    在IT行业中,自定义生产数据表字段说明文档是一项重要的任务,尤其对于数据库管理和数据分析人员而言。这个过程通常涉及用户身份验证、数据库连接、数据表的动态检索以及字段信息的整理和展示。以下是对该主题的详细...

    Java封装hibernate操作数据库.rar

    在Hibernate中,实体类代表数据库中的表,实体类的属性对应表的字段,而实体类的对象则代表表的记录。Hibernate通过配置文件(通常是hibernate.cfg.xml)和映射文件(.hbm.xml或注解)来定义这些关系。一旦配置完成...

    Hibernate不同数据库的连接及SQL方言

    在Hibernate中,连接不同的数据库需要使用不同的数据库连接驱动程序和SQL方言。下面我们将详细介绍如何在Hibernate中连接不同的数据库。 首先,Hibernate提供了一些基本的数据库连接驱动程序,例如mysql、oracle、...

    Hibernate 配置各种数据库

    在 Hibernate 的配置文件中,我们可以使用 properties 文件或 XML 文件来配置数据库连接。下面是一个使用 properties 文件配置 Hibernate 连接数据库的示例: hibernate.connection.driver_class = org.hsqldb.jdbc...

    hibernate自动生成数据库文件

    4. **注解**:在Java实体类中使用注解是定义对象关系映射的一种方式。例如,`@Entity`表示这个类对应一个数据库表,`@Table(name="table_name")`指定表名,`@Id`标记主键字段,`@Column`定义字段属性等。通过这些...

    java用hibernate连接数据库提取中文

    在本项目中,“java用hibernate连接数据库提取中文”是利用Hibernate框架在Eclipse集成开发环境中与Oracle数据库进行交互,以读取和处理中文数据的小程序。下面我们将详细讨论相关的知识点。 首先,我们需要了解...

    hibernate和数据库的各种包

    3. **实体类**:在Hibernate中,实体类代表数据库表,类的每个属性对应表的一列。通常,实体类会继承`Serializable`接口,并使用`@Entity`注解标识。 4. **映射文件(hbm.xml)**:虽然现在更常见的是使用注解进行...

    hibernate动态数据库改进版

    Hibernate是一个开源的ORM框架,它允许开发者使用面向对象的方式来操作数据库,通过映射机制将Java对象与数据库表进行对应,从而避免了繁琐的SQL语句编写。 1.2 动态数据库需求 在实际开发中,我们可能需要根据用户...

    hibernate与各种数据库的连接配置

    要使用 Hibernate 连接 MySql 数据库,需要在 hibernate.cfg.xml 文件中配置连接设置。下面是一个简单的示例: ```xml &lt;hibernate-configuration&gt; &lt;!-- 各属性的配置 --&gt; &lt;!-- 为 true 表示将 Hibernate 发送给...

    根据hibernate反向生成数据库的java代码

    Hibernate逆向工程生成的Java代码通常遵循JPA(Java Persistence API)规范,使得这些实体类可以直接在任何支持JPA的环境中使用,不仅仅是Hibernate。例如,@Entity表示这个类是一个持久化实体,@Table注解指定对应...

    java hibernate不同数据库之间的动态切换

    然而,在某些情况下,我们可能需要在运行时根据不同的条件或需求动态地切换数据库,比如在测试环境和生产环境中使用不同的数据库。这个过程就称为“动态切换数据库”。在本文中,我们将深入探讨如何在Java Hibernate...

Global site tag (gtag.js) - Google Analytics