`
goinglw
  • 浏览: 35276 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate 之 merge() 方法详解

阅读更多
hibernate中,是不允许出现同一主键对象有两个不同session同时关联的情况,如果出现这种情况hibernate会抛出"org.springframework.orm.hibernate3.HibernateSystemException: Illegal attempt to associate a collection with two open sessions; nested exception is org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions"这个异常,这个时候怎么办呢?我们需要通过hibernate提供的merge()这个方法来解决这一问题。

方法原型:
public Object merge(Object object)
使用merge方法是有如下情况
1、如果session中并不存在于参数object具有相同主见的对象,那么,首先需要根据主键从数据库中加载出该对象,然后将参数object中的属性拷贝到加载出来的那个对象上面,最后返回该持久化对象,同时需要注意,参数object并没有关联到session上。

2、如果session中存在与参数objcet具有相同主键属性的对象,那么直接将参数object中的属性拷贝到该持久化对象上,然后将该持久化对象返回,同时需要注意,参数object并没有关联到session上。
分享到:
评论

相关推荐

    Hibernate中的merge使用详情解说.docx

    综上所述,`merge()`方法是Hibernate中处理对象状态转换和数据同步的重要工具。它能够处理各种对象状态,确保数据的一致性和完整性,同时避免了可能的冲突。在设计和实现业务逻辑时,理解并正确使用`merge()`对于...

    hibernate各种常用方法的详解

    ### Hibernate 常用方法详解 #### 一、前言 Hibernate 是一款强大的对象关系映射(ORM)框架,它简化了 Java 应用程序与数据库之间的交互过程。本文将详细介绍 Hibernate 中常用的几种方法,包括 `save`, `update`...

    hibernate持久化技术详解.孙卫琴.代码2

    **hibernate持久化技术详解** Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用中操作数据库的强大工具。通过Hibernate,开发者可以将数据库操作转化为对Java对象的操作,大大降低了...

    merge的注意事项

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

    Hibernate缓存深入详解

    当对象通过Session的save()、update()、merge()方法被持久化或更新时,这些对象会自动放入一级缓存。在同一个Session内,对同一对象的多次查询会直接从缓存中获取,提高了效率。 **4. 二级缓存(SessionFactory缓存...

    Hibernate缓存深入详解.ppt

    使用save()、update()、merge()等方法操作的对象会进入一级缓存。 2-2 二级缓存理解 二级缓存是SessionFactory级别的,可跨Session共享。它可以是进程内的,也可以是分布式的,例如在集群环境中。二级缓存允许更多...

    hibernate三态详解.doc

    在 Hibernate 中,对象的状态管理是其核心特性之一,它有助于理解对象与数据库之间的关系。对象在 Hibernate 中可以处于三种状态:临时状态(Transient)、持久化状态(Persistent)和游离状态(Detached)。理解...

    hibernate+状态详解

    如果需要更新数据库中的数据,可以使用Session的merge()方法将脱管对象重新与Session关联,或者使用update()方法直接更新,前提是对象的标识符能被识别。 除了这些基本状态,还有一种特殊的状态——临时态(New ...

    HibernateAnnotations 中文版

    3. **更新(Update)**: 修改对象后,调用 `Session` 的 `update()` 或 `merge()` 方法,Hibernate 会自动更新数据库中的记录。 4. **删除(Delete)**: 使用 `Session` 的 `delete()` 方法可以删除对象,对应数据库...

    hibernate:java持久化对象详解02

    本教程“hibernate:java持久化对象详解02”是系列教程的一部分,它将继续深入探讨Java中的持久化对象与Hibernate的使用方法。在开始之前,建议先学习“hibernate:java持久化对象详解01”,以确保对基础概念有清晰的...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     8.4.5 Session的merge()方法  8.4.6 Session的delete()方法  8.4.7 Session的replicate()方法  8.5 级联操纵对象图  8.5.1 级联保存临时对象  8.5.2 更新持久化对象  8.5.3 持久化临时对象  8.5.4 更新游离...

    Hibernate+JDBC实现批量插入、更新及删除的方法详解

    Hibernate+JDBC实现批量插入、更新及删除的方法详解 概述:本文主要介绍了Hibernate+JDBC实现批量插入、更新及删除的方法,通过实例形式详细分析了Hibernate与JDBC针对数据库的批量操作相关实现技巧。 知识点一:...

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

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

    详解hibernate4基本实现原理

    - 当调用 `save()` 方法时,Hibernate 首先检查缓存,如果已有相同 ID 的持久化对象,会抛出异常。 - 如果对象是瞬时的,Hibernate 将其放入 Session 缓存,转化为持久化对象。如果需要自动生成主键,Hibernate 会...

    Hibernate update问题

    【Hibernate更新问题详解】 Hibernate,一个强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。在处理数据更新时,Hibernate提供了多种方法,但同时也可能会遇到一些常见问题。本篇文章将深入探讨...

    Hibernate语句

    **Hibernate语句详解** Hibernate,一个强大的Java对象关系映射(ORM)框架,极大地简化了数据库操作。在Java开发中,它提供了一种抽象层,允许开发者使用面向对象的方式来处理数据库交互,而无需直接编写SQL语句。...

    精通 Hibernate:Java 对象持久化技术详解(第2版

    4. CRUD操作:掌握使用Hibernate进行创建(Create)、读取(Read)、更新(Update)和删除(Delete)数据的基本方法,如Session的save()、saveOrUpdate()、load()、get()、update()、merge()、delete()等。...

    Spring mvc+hibernate例子(包括登录、增删改查等简单功能)

    **Spring MVC + Hibernate 整合应用详解** Spring MVC 和 Hibernate 是两种非常流行的开源框架,它们在 Java Web 开发中有着广泛的应用。Spring MVC 作为 Spring 框架的一部分,负责处理 Web 请求,提供模型-视图-...

    Hibernate视频教程免费下载

    - merge()方法:合并一个已存在的实体对象状态。 - **删除操作**: - delete()方法:删除实体对象。 #### 四、高级特性解析 - **懒加载与立即加载**: - 懒加载:在实际需要数据时才加载数据,可以提高性能。 -...

Global site tag (gtag.js) - Google Analytics