Hibernate的dynamic-insert和dynamic-update的使用
Hibernate在初始化的时候,默认按照配置为表预定义insert,delete,update,select(by id)的SQL语句放在session中,其中insert,update
Hibernate在初始化的时候,默认按照配置为表预定义insert,delete,update,select(by id)的SQL语句放在session中,其中insert,update,select操作都是对表的所有字段操作.如果在一个表有很多字段的时候,在做初次inser的时候有比较多的字段为空值,或者经常update某少部分字段,应该在配置文件的
如有这样一张表:create table hbtest(id int,val1 varchar2(100),val2 varchar2(100));
1,在 dynamic-insert没有设置的时候
tbo.setId(new Integer(2));
tbo.setVal1("val1");
sessionFactory.getCurrentSession().save(tbo);
某些字段为空做insert,hibernate会用全字段的insert sql语句,如下:
insert into HBTEST(VAL1, VAL2,ID) values(?, ?,?)
2,将dynamic-insert设置为true,同样的保存,hibernate会动态生成SQL语句,没有值的字段不会出现在insert语句中.
insert into HBTEST(VAL1, ID) values(?, ?)
3,在 dynamic-update没有设置的时候
Hbtest tbo = (Hbtest) sessionFactory.getCurrentSession().load(Hbtest.class,new Integer(1));
tbo.setVal1("valXX");
tx.commit();
只更新部分字段,hibernate仍然对所有字段做更新:
update HBTEST set VAL1=?,VAL2=? where ID=?
4,同样的操作如果把设置为true的话,sql语句只包含更新的字段:update HBTEST set VAL1=? where ID=?
5,Hibernate这种动态SQLupdate的特性是利用在对象从数据库加载到hibernate session的时候保存了一份快照,做更新的时候与这个快照做比较,只更新改动过的值.
所以下面这种情况就会用全部字段进行更新:,不设值的字段会被更新成null.
Hbtest tbo = new Hbtest();
tbo.setId(new Integer(1));
tbo.setVal1("val1ZZZ");
sessionFactory.getCurrentSession().update(tbo);
这种情况应该利用Hibernate提供的对SQL的支持,用SQL做更新操作.

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在SpringBoot项目中集成Hibernate前言Hibernate是一个流行的ORM(对象关系映射)框架,它可以将Java对象映射到数据库表,从而方便地进行持久化操作。在SpringBoot项目中,集成Hibernate可以帮助我们更轻松地进行数据库操作,本文将介绍如何在SpringBoot项目中集成Hibernate,并提供相应的示例。1.引入依赖在pom.xml文件中引入以下依赖:org.springframework.bootspring-boot-starter-data-jpam

Java是一种面向对象编程语言,它被广泛地应用于软件开发领域。Hibernate是一种流行的Java持久化框架,它提供了一种简单且高效的方式来管理Java对象的持久化。然而,开发过程中经常会遇到Hibernate错误,这些错误可能会导致程序的异常终止或者不稳定。如何处理和避免Hibernate错误成为了Java开发者必须掌握的能力。本文将介绍一些常见的Hib

hibernate和mybatis的区别:1、实现方式;2、性能;3、对象管理的对比;4、缓存机制。详细介绍:1、实现方式,Hibernate是一个完整的对象/关系映射解决方案,将对象与数据库表进行映射,MyBatis则需要开发者手动编写SQL语句以及ResultMap;2、性能,Hibernate在开发速度上可能比MyBatis快,因为Hibernate简化了DAO层等等。

Hibernate的一对多和多对多Hibernate是一个优秀的ORM框架,它简化了Java应用程序与关系型数据库之间的数据访问。在Hibernate中,我们可以使用一对多和多对多的关系来处理复杂的数据模型。Hibernate的一对多在Hibernate中,一对多关系是指一个实体类对应多个另一个实体类。比如,一个订单(Order)可以对应多个订单项(OrderItem),一个用户(User)可以对应多个订单(Order)。要在Hibernate中实现一对多关系,需要在实体类中定义一个集合属性来存

在本文中,我们将看到如何在Hibernate中执行批量插入/更新。每当我们执行一条sql语句时,我们都是通过对数据库进行网络调用来完成的。现在,如果我们必须向数据库表中插入10个条目,那么我们必须进行10次网络调用。相反,我们可以通过使用批处理来优化网络调用。批处理允许我们在单个网络调用中执行一组SQL语句。为了理解和实施这一点,让我们定义我们的实体−@EntitypublicclassParent{@Id@GeneratedValue(strategy=GenerationType.AUTO)

Java框架技术栈:介绍常用的Java框架,如SpringMVC、Hibernate、MyBatis等随着Java的不断发展,越来越多的框架被开发出来以简化开发过程。其中,SpringMVC、Hibernate、MyBatis等是Java开发中最常用的框架之一。本文将介绍这些框架的基本概念和使用方法,帮助读者更好地理解和应用这些框架。第一,我们来介绍Sp

Hibernate是一个开放源码的ORM框架,它将关系型数据库和Java程序之间的数据映射相互绑定,这样可以使开发人员更方便地访问数据库中的数据。使用Hibernate框架可以大量减少编写SQL语句的工作,提高应用程序的开发效率和可重用性。下面从以下几个方面来介绍Hibernate框架。一、Hibernate框架的优点对象关系映射,隐藏数据库访问细节,使开发

缓存有助于减少执行查询时的数据库网络调用。一级缓存与会话链接。它是隐式实现的。一级缓存存在直到会话对象存在为止。一旦会话对象终止/关闭,将会有没有缓存对象。二级缓存适用于多个会话对象。它是链接的与会话工厂。二级缓存对象可供所有会话使用单会话工厂。当特定会话发生时,这些缓存对象将被终止工厂已关闭。实现二级缓存我们需要添加以下依赖项才能使用二级缓存。<!--https://mvnrepository.com/artifact/net.sf.ehcache/ehcache--><de
