【hibernate merge】session1.merge(T entity)方法的含义和update方法的区别

1》session1.merge(T entity) 合并实体的方法。

2》merge的作用是:新new一个对象,如果该对象设置了ID,则这个对象就当作游离态处理:

                                      当ID在数据库中不能找到时,用update的话肯定会报异常,然而用merge的话,就会insert。

                                      当ID在数据库中能找到的时候,update与merge的执行效果都是更新数据,发出update语句;

                                  如果没有设置ID的话,则这个对象就当作瞬态处理:

                                  用update的话,由于没有ID,所以会报异常,merge此时则会保存数据,根据ID生产策略生成一条数据;

3》作用类似与saveOrUpdate()方法,作用基本一致,不过略有区别。

4》与saveOrUpdate()方法的区别是:

      1.saveOrUpdate()是完全更新数据

      2.merge()方法在更新数据的时候,例如数据库中本条数据的name这个字段是‘李四’,而新的要合并的数据中name字段是null,那数据库中name字段的数据是不被替换的,依旧是‘李四‘,而其他字段被替换。

时间: 2024-10-01 03:49:45

【hibernate merge】session1.merge(T entity)方法的含义和update方法的区别的相关文章

MongoDB中insert方法、update方法、save方法简单对比

MongoDB中insert方法.update方法.save方法简单对比 1.update方法 该方法用于更新数据,是对文档中的数据进行更新,改变则更新,没改变则不变. 2.insert方法 该方法用于插入数据到文档中,也就是给文档添加新数据. 3.save方法 该方法同样用于插入数据到文档中,功能是类似于insert方法的.与insert方法不同的是, save方法是遍历文档,逐条将数据插入进去的,而insert方法是将整个文档整体插入进去的. 由两个方法的源码可以看出来. save方法的写法

[原创]java WEB学习笔记79:Hibernate学习之路--- 四种对象的状态,session核心方法:save()方法,persist()方法,get() 和 load() 方法,update()方法,saveOrUpdate() 方法,merge() 方法,delete() 方法,evict(),hibernate 调用存储过程,hibernate 与 触发器协同工作

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Hibernate中的merge方法

Hibernate中有一个常见的错误: A different object with the same identifier value was already associated with the session 在一个session中存在两个不同的实体却有着相同的身份标签(主键)是会报错的,想要避免这种错误可以使用Hibernate中的merge方法. merge方法的作用: new一个对象并设置ID时,这个对象会被当作游离态处理,在使用merge时,如果在数据库中不能能找到这条记录,则

Hibernate的merge与update方法的区别

今天做了个测试,写了个测试用例来看看merge与update时控制台打印出来的日志有什么不一样.实体bean很简单,就id和name两个字段,接下来分别给出以下几种测试情形的控制台日志内容: 1. 数据库记录已存在,更改person的name为一个新的name. merge方法打印出的日志如下: Hibernate: select person0_.id as id0_0_, person0_.name as name0_0_ from person person0_ where person0

hibernate中的merge()方法

Hibernate提供有save().persist().savaOrUpdate()和merge()等方法来提供插入数据的功能.前三者理解起来较后者容易一些,而merge()方法从api中的介绍就可以看出它是最复杂的,因此要特别留意一下. Hibernate的api中关于merge()方法的原文 merge Object merge(Object object) throws HibernateException Copy the state of the given object onto

Hibernate中的merge使用详情解说

merge的作用是:新new一个对象,如果该对象设置了ID,则这个对象就当作游离态处理:                                       当ID在数据库中不能找到时,用update的话肯定会报异常,然而用merge的话,就会insert.                                       当ID在数据库中能找到的时候,update与merge的执行效果都是更新数据,发出update语句:                            

Hibernate更新某些字段的几种update方法

Hibernate 中如果直接使用 Session.update(Object o); 会把这个表中的所有字段更新一遍. 比如: [java] view plaincopy public class TeacherTest { @Test public void update(){ Session session =  HibernateUitl.getSessionFactory().getCurrentSession(); session.beginTransaction(); Teache

Entity Framework(EF的Model First方法)

EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架.同其它ORM(如,NHibernate,Hibernate)一样, 一是为了使开发人员以操作对象的方式去操作关系型数据表. 二是为了屏蔽底层不同厂商的数据库,开发人员面向ORM框架编写数据的CRUD(Create,Retrieve,Update,Delete)操作,再由ORM框架将这些操作翻译成不同数据库厂商的语言. 从EF 4.X开始支持三种构建方法:1. Database

Entity Framework DbSet<T>之Include方法与IQueryable<T>扩展方法Include的使用

Entity Framework使用Code First方式时,实体之间已经配置好关系,根据实际情况某些情况下需要同时获取导航属性,比如获取商品的同时需要获取分类属性(导航属性),或者基于优化方面考虑等,下面来看一个例子 例子中有会员实体类(Member)与角色实体类(Role),Role与Member的关系是1:n,控制台应用程序代码如下: using System; using System.Collections.Generic; using System.Linq; using Syst