`
让往事都随风
  • 浏览: 66873 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Hibernate数据更新——Session.update/Session.saveOrUpdate

阅读更多
Hibernate数据更新——Session.update/Session.saveOrUpdate
Session.update执行步骤:

1. 首先根据待更新实体对象的Key,在当前session的内部缓存中进行查找,如果发现,则认为当前实体对象已经处于Persistent状态,返回。从这一点可以看出,对一个Persistent状态的实体对象调用update语句并不会发生任何作用。
2. 初始化实体对象的状态信息(作为之后脏数据检查的依据),并将其纳入内部缓存。注意这里Session.update方法本身并没有发送Update SQL完成数据更新操作,Update SQL将在之后的Session.flush方法中执行(Transaction.commit在真正提交数据库事务之前会调用Session.flush)。
Session.saveOrUpdate执行步骤:

1. 首先在Session内部缓存中进行查找,如果发现则直接返回。
2. 执行实体类对应的Interceptor.isUnsaved方法(如果有的话),判断对象是否为未保存状态。
3. 根据unsaved-value判断对象是否处于未保存状态。
4. 如果对象未保存(Transient状态),则调用save方法保存对象。
5. 如果对象未已保存(Detached状态),则调用update方法将对象与Session重新关联。

可以看到,saveOrUpdate实际上时save和update方法的组合应用。它本身并没有增加新的功能特性。
分享到:
评论

相关推荐

    Hibernate使用——入门

    - **Update**:更新对象状态后,调用`Session.update()`或`Session.saveOrUpdate()`来保存更改。 - **Delete**:使用`Session.delete()`方法删除对象。 **7. HQL与Criteria查询** Hibernate Query Language (HQL) ...

    hibernate--3.Hibernate数据持久化(通过 Session 操纵对象)

    本篇文章主要关注如何通过Hibernate的Session接口来操纵对象,实现数据的持久化。 首先,我们需要理解Session在Hibernate中的角色。Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、...

    hibernate-release-5.0.6.Final

    2. 更新:调用Session的update()方法更新已存在的对象。 3. 删除:使用Session的delete()方法移除数据库中的记录。 4. 查询:使用Query或Criteria API进行复杂查询,或通过Session的get()和load()方法获取单个对象。...

    Hibernate 4——Hello World

    通过将Java对象与数据库表之间的映射关系进行抽象,Hibernate允许开发者用面向对象的方式处理数据,从而减少了对SQL的直接依赖。 ### Hibernate 4简介 Hibernate 4是Hibernate框架的一个重要版本,它带来了许多改进...

    Hibernate总结——课程管理

    修改对象的属性,然后调用`Session.update()`或`Session.saveOrUpdate()`方法更新数据库。 4. **删除(Delete)** 调用`Session.delete()`方法删除对象,对象必须已经加载到当前会话。 ### 示例代码 以下是一个...

    hibernate session.doc

    除了`delete()`方法,`Session`还提供了其他操作,如`save()`、`saveOrUpdate()`和`update()`,它们分别用于保存新对象、根据现有状态决定保存或更新对象以及更新对象的现有状态。另外,`Session`还有一系列方法用于...

    Hibernate4总结文档

    - 更新(Update):调用`Session.update()`或`Session.saveOrUpdate()`更新对象。 - 删除(Delete):`Session.delete()`方法用于删除对象。 6. 查询语言(HQL): Hibernate提供了一种面向对象的查询语言——...

    Hibernate持久层方法汇总

    本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...

    Spring-MVC-Hibernate-CRUD-源码.rar

    在Spring MVC中,更新逻辑通常在方法中实现,更新后的实体通过Session.update()或Session.saveOrUpdate()保存。 - **删除(Delete)**:DELETE请求对应删除操作。Spring MVC的方法处理删除请求,Hibernate的Session....

    hibernat-session方法

    6. **session.saveOrUpdate()** - 这个方法是save()和update()的组合,可以根据对象的状态自动选择是保存还是更新。如果对象是新的,它会调用save();如果对象已存在,它会调用update()。 7. **session.load()** - ...

    hibernate-release-5.1.16.Final

    - 更新(Update):当对象发生变化时,更新数据库中的记录。 - 删除(Delete):从数据库中删除指定对象对应的记录。 - 加载(Load/Get):根据主键从数据库中获取对象。 - 查询(Query):使用HQL或Criteria API...

    hibernate-min-lib.rar

    《Hibernate框架精简版——深入理解与应用》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作上的工作。"hibernate-min-lib.rar" 提供了一个精简版的Hibernate库,包含了...

    hibernate-release-4.2.3.lib.zip

    2. 更新:调用Session的update()或merge()方法,根据对象的状态更新数据库记录。 3. 删除:Session的delete()方法用于从数据库中删除对象对应的记录。 4. 查询:通过Query或Criteria API执行查询,获取结果集后,...

    hibernate-3.3.2.GA.zip

    2. 缓存:提高数据访问速度,Hibernate支持一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),可选第三方缓存实现如Ehcache。 六、关联关系 Hibernate支持一对一、一对多、多对一、多对多等...

    Hibernate操作数据库的方法

    Session 是 Hibernate 提供的主要接口,用于执行数据库操作,如 CRUD(Create, Read, Update, Delete)。Session 实例通过调用相应的方法,如 saveOrUpdate、delete 和 createQuery,可以实现对象的持久化、删除和...

    Hibernate入门示例.doc

    3. 更新(Update):找到要更新的对象,修改其属性,然后调用`update()`方法。 ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); entity.setName(...

    Hibernate(session管理)

    本文将深入探讨Hibernate中的核心概念——Session管理。 首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,...

    hibernate-distribution-3.3.2.GA版本的开发手册

    3. 保存/更新实体:通过Session的save()、saveOrUpdate()、update()方法实现。 4. 删除实体:使用Session的delete()方法。 5. 查询实体:通过Query或Criteria API执行查询,获取结果集。 6. 清理Session:完成事务后...

    Hibernate基本实现

    - **更新(Update)**:修改对象属性后,调用`update()`方法更新数据库。 ```java user.setName("Jane Doe"); session.update(user); ``` - **删除(Delete)**:调用`delete()`方法移除对象。 ```java ...

    在Hibernate应用中处理批量更新和批量删除

    在Hibernate中,默认情况下,每个实体的修改都会触发一次数据库更新操作,这对于大规模数据更新来说是低效且不可接受的。 ### 二、默认的批量更新方法及其局限性 #### 方法一:逐条更新 这是最直观的方法,即通过...

Global site tag (gtag.js) - Google Analytics