`
raisun_1988
  • 浏览: 117820 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Hibernate:merge(),attachDirty(),attachClean()

    博客分类:
  • Java
阅读更多

学java和asp.net的朋友-免费的浪曦java视频和asp.net视频下载. 是全套的完整的。http://www.itpob.cn/bbs/thread-196-1-1.html 有需要的可以去下。 // 关于merge() attachDirty() attachClean()三种方法下面做一个简单的介绍 /** * 将传入的detached状态的对象的属性复制到持久化对象中,并返回该持久化对象。 * 如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持detached状态。 */ public CodeDepts merge(Usertable detachedInstance) { log.debug("merging Usertable instance"); try { Usertable result = (Usertable) getSession() .merge(detachedInstance); log.debug("merge successful"); return result; } catch (RuntimeException re) { log.error("merge failed", re); throw re; } } /** * 将传入的对象持久化并保存。 * 如果对象未保存(Transient状态),调用save方法保存。如果对象已保存(Detached状态),调用update方法将对象与Session重新关联。 */ public void attachDirty(Usertable instance) { log.debug("attaching dirty Usertable instance"); try { getSession().saveOrUpdate(instance); log.debug("attach successful"); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } } /** * 将传入的对象状态设置为Transient状态 */ public void attachClean(Usertable instance) { log.debug("attaching clean Usertable instance"); try { getSession().lock(instance, LockMode.NONE); log.debug("attach successful"); } catch (RuntimeException re) { log.error("attach failed", re); throw re; } } merge:将传入的detached状态的对象的属性复制到持久化对象中,并返回该持久化对象 。如果该session中没有关联的持久化对象,加载一个,如果传入对象未保存,保存一个副本并作为持久对象返回,传入对象依然保持detached状态。 attachDirty:将传入的对象持久化并保存。如果对象未保存(Transient状态),调用save方法保存。如果对象已保存(Detached状态),调用update方法将对象与Session重新关联。 attachClean:将传入的对象状态设置为Transient状态。 说明一下,在Hibernate中的对象有三种状态,即: 瞬时状态(Transient)、持久状态(Persistent)、脱管状态(Detached) 1、瞬时状态(Transient) 由new命令开辟内存空间的Java对象,也就是平时所熟悉的普通Java对象。 如:Person p = new Person(); 瞬时对象特点: (1)不和Session实例关联 (2)在数据库中没有和瞬时对象关联的记录 2、持久状态(Persistent) 持久的实例在数据库中有对应的记录,并拥有一个持久化标识(identifier). 持久对象总是与Session和Transaction相关联,在一个Session中,对持久对象的改变不会马上对数据库进行变更,而必须在Transaction终止,也就是执行commit()之后,才在数据库中真正运行SQL进行变更,持久对象的状态才会与数据库进行同步。在同步之前的持久对象称为脏(dirty)对象。 瞬时对象转为持久对象: (1) 通过Session的save()和saveOrUpdate()方法把一个瞬时对象与数据库相关联,这个瞬时对象就成为持久化对象。 (2) 使用fine(),get(),load()和iterater()待方法查询到的数据对象,将成为持久化对象。 持久化对象的特点: (1) 和Session实例关联 (2) 在数据库中有和持久对象关联的记录 3、脱管状态(Detached) 与持久对象关联的Session被关闭后,对象就变为脱管对象。对脱管对象的引用依然有效,对象可继续被修改。 脱管对象特点: (1) 本质上和瞬时对象相同 (2) 只是比爱瞬时对象多了一个数据库记录标识值id. 持久对象转为脱管对象: 当执行close()或clear(),evict()之后,持久对象会变为脱管对象。 瞬时对象转为持久对象: 通过Session的update(),saveOrUpdate()和lock()等方法,把脱管对象变为持久对象。

分享到:
评论

相关推荐

    hibernate:java持久化对象详解02

    例如,使用`save()`或`saveOrUpdate()`方法可以将对象持久化到数据库,`get()`和`load()`用于根据ID获取对象,`update()`和`merge()`用于更新对象,`delete()`则用于删除对象。 事务管理是数据库操作中的关键部分。...

    Hibernate中的merge使用详情解说

    Hibernate merge 使用详情解说 在 Hibernate 中,merge 方法是非常重要的一个方法,它能够帮助开发者轻松地处理数据的更新和插入操作。那么,merge 方法到底如何工作的呢?下面,我们将对 merge 方法进行详细的解释...

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

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

    6进阶 3:merge:合并 commits.md

    进阶 3:merge:合并 commits 学习时长: 11分9秒 8 进阶 4:Feature Branching:最流行的工作流 学习时长: 8分10秒 9 进阶 5:关于 add 学习时长: 2分25秒 10 进阶 6:看看我都改了什么 学习时长: 5分18秒 11 高级 1...

    Hibernate:不容易理解的 lock 和 merge.docx

    在 Hibernate 框架中,`lock` 和 `merge` 是两个重要的操作,它们涉及到对象的状态管理和事务控制。本文将详细解析这两个概念及其在实际应用中的作用。 首先,`lock` 方法是 Hibernate 提供的一个机制,用于在不同...

    poppy & glamrock: merge master摇滚之王:合并大师Unity合并士兵战斗游戏项目源码C#

    poppy & glamrock : merge master摇滚之王:合并大师Unity合并士兵战斗游戏项目源码C# 支持Unity版本2019.4.3f1及以上 描述 合并、战斗并挑战自己,成为虞美人和魅力摇滚之王:合并大师 演示版APK 特征 统一广告... ...

    解析SQL Server 2008中的新语句:MERGE

    根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的操作,运用新的MERGE语句,开发者用一条命令就可以完成。对两个表进行信息同步时,有三步操作要进行。首先要处理任何需要插入目标数据表的新...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate()方法 201 8.5 级联操纵对象图 202 8.5.1 级联保存临时对象 206 8.5.2 更新持久化对象 207 8.5.3 持久化临时对象 ...

    精通 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 更新游离...

    骰子项目游戏模版:Merge Dice - Game Template v1.3.1

    Merge Dice 是一款专为移动设备设计的超休闲游戏模板,核心玩法是通过连接相同颜色的骰子来合并它们。游戏特色如下: 完整的游戏模板,提供一切所需资源,便于快速开发。 针对 Android 平台进行了优化,支持竖屏和横...

    Pandas 数据处理详解:merge、join 和 concat 方法的应用

    本文主要介绍如何在 pandas 包中使用 merge、join 和 concat 这些基本的数据合并和拼接方法。merge 方法用于基于多个 DataFrame 间的公共列进行连接。通过 how 参数可以实现左连接(left),右连接(right),内连接...

    精通Hibernate:对象持久化技术第二版part3

    8.4.5 Session的merge()方法 198 8.4.6 Session的delete()方法 200 8.4.7 Session的replicate()方法 201 8.5 级联操纵对象图 202 8.5.1 级联保存临时对象 206 8.5.2 更新持久化对象 207 8.5.3 持久化临时对象 ...

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

     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:Java 对象持久化技术详解(第2版).part3

     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:Java 对象持久化技术详解(第2版).part1.rar

     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 save persist merge探究

    《Hibernate的save、persist、merge深度解析》 在Java企业级开发中,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。本文将深入探讨Hibernate中的save、persist和merge这三个方法,帮助...

    Pandas合并DataFrame:Merge, Join, Concat, Append【Pandas入门教程6】

    Pandas合并DataFrame_Merge,_Join,_Concat,_Append【Pandas入门教程6】

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

    在Java的ORM框架Hibernate中,`merge()`是一个非常重要的操作,它主要用于将游离态或瞬态的对象合并到持久化状态。理解`merge()`的工作原理对于优化数据操作和避免潜在的冲突至关重要。以下是对`merge()`函数的详细...

    mergetest:mergetest

    在IT行业中,合并测试(Merge Test)是软件开发流程中的一个重要环节,特别是在使用版本控制系统如Git的情况下。这个过程确保了不同开发人员的工作在合并到主分支时能够正确地协同工作,避免冲突和功能失效。标题...

    diff & merge tool: araxis merge

    《Araxis Merge:高效强大的差异比较与合并工具》 在IT行业中,版本控制和协同开发是必不可少的部分。在这个领域,一款优秀的差异比较(diff)和合并(merge)工具能够极大地提高团队的工作效率,减少错误和冲突。...

Global site tag (gtag.js) - Google Analytics