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方法的组合应用。它本身并没有增加新的功能特性。
分享到:
相关推荐
- **Update**:更新对象状态后,调用`Session.update()`或`Session.saveOrUpdate()`来保存更改。 - **Delete**:使用`Session.delete()`方法删除对象。 **7. HQL与Criteria查询** Hibernate Query Language (HQL) ...
本篇文章主要关注如何通过Hibernate的Session接口来操纵对象,实现数据的持久化。 首先,我们需要理解Session在Hibernate中的角色。Session是Hibernate的核心接口之一,它负责对象的持久化操作,比如保存、更新、...
2. 更新:调用Session的update()方法更新已存在的对象。 3. 删除:使用Session的delete()方法移除数据库中的记录。 4. 查询:使用Query或Criteria API进行复杂查询,或通过Session的get()和load()方法获取单个对象。...
通过将Java对象与数据库表之间的映射关系进行抽象,Hibernate允许开发者用面向对象的方式处理数据,从而减少了对SQL的直接依赖。 ### Hibernate 4简介 Hibernate 4是Hibernate框架的一个重要版本,它带来了许多改进...
修改对象的属性,然后调用`Session.update()`或`Session.saveOrUpdate()`方法更新数据库。 4. **删除(Delete)** 调用`Session.delete()`方法删除对象,对象必须已经加载到当前会话。 ### 示例代码 以下是一个...
除了`delete()`方法,`Session`还提供了其他操作,如`save()`、`saveOrUpdate()`和`update()`,它们分别用于保存新对象、根据现有状态决定保存或更新对象以及更新对象的现有状态。另外,`Session`还有一系列方法用于...
- 更新(Update):调用`Session.update()`或`Session.saveOrUpdate()`更新对象。 - 删除(Delete):`Session.delete()`方法用于删除对象。 6. 查询语言(HQL): Hibernate提供了一种面向对象的查询语言——...
本文将详细介绍Hibernate持久层中的一些核心方法,包括`session.load`, `session.find`, `session.iterator`, `session.save`, `session.update`, `session.saveorupdate`。 1. `session.load()`: - `load()`方法...
在Spring MVC中,更新逻辑通常在方法中实现,更新后的实体通过Session.update()或Session.saveOrUpdate()保存。 - **删除(Delete)**:DELETE请求对应删除操作。Spring MVC的方法处理删除请求,Hibernate的Session....
6. **session.saveOrUpdate()** - 这个方法是save()和update()的组合,可以根据对象的状态自动选择是保存还是更新。如果对象是新的,它会调用save();如果对象已存在,它会调用update()。 7. **session.load()** - ...
- 更新(Update):当对象发生变化时,更新数据库中的记录。 - 删除(Delete):从数据库中删除指定对象对应的记录。 - 加载(Load/Get):根据主键从数据库中获取对象。 - 查询(Query):使用HQL或Criteria API...
《Hibernate框架精简版——深入理解与应用》 Hibernate,作为一个强大的对象关系映射(ORM)框架,极大地简化了Java开发者在数据库操作上的工作。"hibernate-min-lib.rar" 提供了一个精简版的Hibernate库,包含了...
2. 更新:调用Session的update()或merge()方法,根据对象的状态更新数据库记录。 3. 删除:Session的delete()方法用于从数据库中删除对象对应的记录。 4. 查询:通过Query或Criteria API执行查询,获取结果集后,...
2. 缓存:提高数据访问速度,Hibernate支持一级缓存(Session级别的缓存)和二级缓存(SessionFactory级别的缓存),可选第三方缓存实现如Ehcache。 六、关联关系 Hibernate支持一对一、一对多、多对一、多对多等...
Session 是 Hibernate 提供的主要接口,用于执行数据库操作,如 CRUD(Create, Read, Update, Delete)。Session 实例通过调用相应的方法,如 saveOrUpdate、delete 和 createQuery,可以实现对象的持久化、删除和...
3. 更新(Update):找到要更新的对象,修改其属性,然后调用`update()`方法。 ```java Session session = sessionFactory.openSession(); Transaction transaction = session.beginTransaction(); entity.setName(...
本文将深入探讨Hibernate中的核心概念——Session管理。 首先,理解Session在Hibernate中的角色至关重要。Session是Hibernate的主要工作单元,它是应用程序与数据库之间的桥梁。它负责保存、检索和更新Java对象,...
3. 保存/更新实体:通过Session的save()、saveOrUpdate()、update()方法实现。 4. 删除实体:使用Session的delete()方法。 5. 查询实体:通过Query或Criteria API执行查询,获取结果集。 6. 清理Session:完成事务后...
- **更新(Update)**:修改对象属性后,调用`update()`方法更新数据库。 ```java user.setName("Jane Doe"); session.update(user); ``` - **删除(Delete)**:调用`delete()`方法移除对象。 ```java ...
在Hibernate中,默认情况下,每个实体的修改都会触发一次数据库更新操作,这对于大规模数据更新来说是低效且不可接受的。 ### 二、默认的批量更新方法及其局限性 #### 方法一:逐条更新 这是最直观的方法,即通过...