`
wyz52053098
  • 浏览: 14441 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类
最新评论

merge 与 saveOrUpdate 与 update 的区别

 
阅读更多

  //此时的user为托管状态
  User user = getUser();
  user.setName("temp");
  
  Session session = HibernateUtils.getSession();
  Transaction transaction = session.beginTransaction();
  
  session.merge(user);
  
  //此时的user为托管状态
  user.setName("temp2");
  
  transaction.commit();
  
  session.close();

 

 调用merge你的对象还是托管状态,此时temp修改成功,但是temp2没修改成功,

merge之后user为托管状态,hibernate检测不到他的变化

 

调用saveOrUpdate你的对象是持久状态,此时temp修改成功,temp2也修改成功。

save还是update,hibernate是根据id和version值来判断是save还是update,如果id有值则为update方法,如果id没有值则调用save方法。

 

 

当一个对象为托管状态时调用update方法,为持久状态时调用set方法。

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Hibernate merge、update与saveOrUpdate方法的区别

    ### Hibernate merge、update与saveOrUpdate方法的区别 在Hibernate框架中,`merge`、`update`与`saveOrUpdate`这三个方法都是用于更新或保存实体对象到数据库中的,但它们之间存在着重要的区别,这些区别主要体现...

    save, saveOrUpdate, persist, merge, update 区别.docx

    在Java的持久化框架Hibernate中,管理对象与数据库之间的交互是通过一系列的方法完成的,其中包括`save()`, `saveOrUpdate()`, `persist()`, `merge()`, 和 `update()`。这些方法各有其特点和适用场景,理解它们的...

    merge的注意事项

    在探讨“merge的注意事项”这一主题时,我们深入解析Hibernate框架中merge操作的特性与应用场景,以及它与其他数据持久化方法的区别,特别是与saveOrUpdate函数的对比。这不仅有助于理解Hibernate的核心机制,还能...

    05_传智播客hibernate教程_实体对象的三种状态与saveOrUpdate方法

    2. **持久化状态(Persistent)**:一旦Hibernate通过`Session`对象的`save()`、`persist()`或`merge()`方法将瞬时对象与数据库记录绑定,对象就进入了持久化状态。此时,对象的任何变化都会在下次提交事务时同步到...

    hibernate各种常用方法的详解

    - 与 `saveOrUpdate` 类似,但区别在于如果对象与 Session 中的对象具有相同的标识符,则会复制一份新的对象到 Session 中,而不是直接更新现有的持久态对象。 - 可能会产生 `NonUniqueObjectException` 异常。 #...

    Hibernate 映射关系! 基础封装

    `merge()`和`update()`之间的区别在于,`merge()`总是创建或找到一个持久化副本,并将其状态与传入的对象同步,即使原始对象是瞬态的。而`update()`只适用于已知存在的脱管对象。 在设计和实现Hibernate应用时,...

    Java最新2023年面试题附答案解析,大汇总.md

    Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分别是做什么的?有什么区别 用代码演示三种代理 stackoverflow错误,permgen space错误 分代收集算法 同步方法和同步块,哪个是更...

    hibernate的各种保存方式的区别以及hibernate对象的三种状态[定义].pdf

    4. update()和saveOrUpdate()的区别: - update()仅用于更新数据库中的对象,对象必须有持久化标识。 - saveOrUpdate()则更智能,它会根据对象是否有持久化标识和版本信息来决定是执行INSERT还是UPDATE。 理解...

    Hibernate对象状态以及各种保存方法的区别

    - 可以通过 `Session` 的 `update()`、`saveOrUpdate()` 或 `merge()` 方法将脱管对象重新关联到 `Session`,并更新为持久对象。 **保存方法的区别:** - **save()**: 用于将瞬时对象持久化,如果对象已经具有...

    Hibernate三种状态

    脱管对象可以通过Session的merge()方法重新与Session关联,使其变回持久状态,或者通过update()或saveOrUpdate()方法将更改同步到数据库。 转换关系如下: 1. 瞬时对象可以通过Session的save()或saveOrUpdate()方法...

    Hibernate中po对象的三种状态分析[借鉴].pdf

    4. **update()与saveOrUpdate()的区别** - **update()**:仅适用于更新已有记录,不会插入新记录。 - **saveOrUpdate()**:根据对象的标识判断是插入新记录还是更新已有记录,适用于对象状态不确定的情况。 5. **...

    西安领航核心项目Hibernate部分重点、难点总结

    ### Persist、Save、Merge和Update方法的区别 - **Persist和Save**:两者相似,用于将瞬时对象变为持久化对象。 - **Merge和Update**:Merge可以将离线对象的状态合并到Session中,如果存在ID冲突,会更新原有对象...

    Hibernate的各种保存方式的区别详解

    Hibernate提供了多种保存方式,包括save()、persist()、update()、saveOrUpdate()等,了解这些方法的区别非常重要,以便正确使用它们。本文将对Hibernate的各种保存方式进行详细的比较和分析。 一、预备知识 在...

    java框架方面面试题

    最后,Hibernate中Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法的功能与区别也是面试中常考的点。Hibernate定义了对象的三种状态:瞬时态、持久态和游离态。瞬时态对象是指刚被创建...

    hibernate相关配置 3种状态

    要重新与Session关联并更新数据库,可以使用Session的merge()或update()方法。 3. Hibernate操作对象的生命周期: - 新建一个对象并设置属性,此时对象处于瞬时态。 - 调用Session的save()或saveOrUpdate()方法,...

    hibernate的各种保存方式的区别

    - **持久状态(Persistent)**:当一个对象与`Session`关联后,并且已经通过`Session`的方法如`save()`、`persist()`或`saveOrUpdate()`等进行保存操作后,该对象就处于持久状态。这意味着该对象的数据会被持久化到...

    JAVA面试问题及答案.docx

    此外,Session还提供了save()、update()、merge()、lock()、saveOrUpdate()和persist()等方法来管理对象的状态。save()和persist()用于将瞬时态对象转变为持久态,而update()和merge()则用于更新游离态对象。merge()...

    hibernate三状态

    - **游离态 -> 持久态**:通过Session的merge()、update()或saveOrUpdate()方法,可以将游离态对象重新与Session关联,成为持久态。 - **游离态 -> 瞬时态**:如果游离态对象的ID不再被引用,那么对象就可能变为瞬...

    java框架面试题

    #### 五、Session中的save、update、merge、lock、saveOrUpdate和persist方法 **1. 方法的功能与区别** - **save**:将一个瞬时态的对象变为持久态,会触发INSERT语句。 - **update**:将一个游离态的对象变为持久...

    hibernate三态详解.doc

    Hibernate 提供了多种方法来保存对象,包括 `save()`, `persist()`, `update()`, `saveOrUpdate()`, `merge()` 和 `lock()`。这些方法在不同场景下有不同的作用: - `save()` 和 `persist()`:两者都可以将对象持久...

Global site tag (gtag.js) - Google Analytics