`

Hibernate update与lock区别

阅读更多
a)update是把一个已经更改过的脱管状态(detached)的对象变成持久状态(persistent)对象


b)lock是把一个没有更改过的脱管状态的对象变成持久状态(针对的是因为session关闭而处于脱管状态(detached)的持久状态对象(persistent)),不能针对因delete而处于脱管状态的对象。


c)update的操作步骤是:改动后的脱管对象的修改-->调用update。 Lock的操作步骤是调用lock把未修改的对象从脱管状态变成持久-->更改持久状态(persistent)的对象的内容-->等待flush或者手动flush。


d)Lock把对象变成持久对象,但不会同步对象状态。就是把对象查出来,加一把锁不让别人修改


分享到:
评论

相关推荐

    Hibernate.lock()方法中各种锁的区别.docx

    ### Hibernate.lock() 方法中各种锁的区别 #### 一、悲观锁与乐观锁概念解析 **悲观锁**(Pessimistic Lock)与**乐观锁**(Optimistic Lock)是数据库和对象关系映射(ORM)框架中两种重要的锁定机制,主要用于...

    Hibernate锁机制_悲观锁和乐观锁

    Hibernate 会在数据库中加入一个 VERSION 栏记录,在读取数据时连同版本号一同读取,并在更新数据时递增版本号,然后比对版本号与数据库中的版本号,如果大于数据库中的版本号则予以更新,否则就回报错误。...

    Hibernate错误及解决办法集合

    **可能原因**:该错误表示Hibernate尝试从数据库中查询一个不存在的字段,通常是由于实体类属性名与数据库字段名不一致导致的。 **解决方案**: 1. **检查实体类属性名**:确认实体类中的属性名与数据库表中的字段...

    hibernate的各种保存方式的区别

    ### Hibernate的各种保存方式的区别 #### 一、预知知识点:Hibernate中的对象状态 在深入了解Hibernate中各种保存方式之前,我们先来了解一下Hibernate中对象的状态,这对于理解这些保存方式至关重要。 - **瞬时...

    Hibernate三种状态区分

    在 Hibernate 中,对象有三种不同的状态,这些状态决定了对象与数据库之间的关联程度以及如何进行数据操作。理解这些状态对于有效地使用 Hibernate 至关重要。 1. **瞬时态(Transient)**: - 瞬时态的对象是刚刚...

    Hibernate入门文档

    Hibernate 难点解析: hibernate中uuid和native的相关总结 Hibernate get与load的区别 hibernate二级缓存中list和iterator的用法 ...lock和update区别 save 和update区别 update 和saveOrUpdate区别

    hibernate事务管理机制.doc

    在Hibernate中,乐观锁可以通过`optimistic-lock`属性来配置,如设置为`version`,使得在对象脱离Session时仍能通过版本检查保证一致性。 在配置乐观锁时,需要在映射文件中为实体类指定`optimistic-lock`属性,...

    Hibernate的乐观锁与悲观锁

    ### Hibernate的乐观锁与悲观锁 #### 一、引言 在并发环境下,尤其是在金融、电商等业务场景中,确保数据的一致性和完整性至关重要。**Hibernate**作为一种流行的Java持久层框架,提供了多种机制来处理并发控制...

    Hibernate悲观锁和乐观锁的实现

    2. **LockMode**: Hibernate提供了LockMode类,可以通过Session的`lock()`或`update()`方法,指定LockMode.PESSIMISTIC_WRITE或LockMode.PESSIMISTIC_READ来获取悲观锁。 **乐观锁**(Optimistic Lock)则相对乐观...

    Hibernate乐观锁和悲观锁分析

    【Hibernate乐观锁与悲观锁详解】 在开发过程中,尤其是在并发环境下,确保数据的一致性和完整性至关重要。Hibernate,作为Java领域广泛使用的ORM框架,提供了一种处理并发数据访问冲突的手段,那就是锁机制。主要...

    Hibernate持久化对象的生命周期

    Session的多种方法如`save()`, `load()`, `get()`, `find()`, `update()`, `saveOrUpdate()`, `lock()`等可以将对象转变为持久化状态。 3. **离线对象(Detached Objects)**: - 离线对象是曾经是持久化对象,但...

    hibernate-mapping参数详解

    与 `default-access` 类似,这个属性允许开发者显式指定访问方式,即使默认配置不同。 #### 6. KeyGenerator 在 Hibernate 中,为了自动生成主键,需要配置 KeyGenerator。以下是几种常见的 KeyGenerator 类型: ...

    hibernate的乐观锁和悲观锁

    观察Hibernate生成的SQL语句可以看到`FOR UPDATE`子句的使用,这就是悲观锁的具体实现方式之一。 **Hibernate的锁模式**: - `LockMode.NONE`:不使用任何锁机制。 - `LockMode.WRITE`:Hibernate在插入或更新记录...

    hibernate乐观锁和悲观锁学习

    在Hibernate中,我们可以使用`setLockMode`方法对查询结果进行加锁,例如设置`LockMode.UPGRADE`,这将使Hibernate在执行SQL时添加`FOR UPDATE`子句,从而实现悲观锁。 接下来是乐观锁(Optimistic Locking)。与...

    hibernate持久化对象生命周期[参照].pdf

    当事务提交时,Hibernate会通过SQL的INSERT, UPDATE, DELETE语句更新数据库。持久化对象的特征如下: - 存在于一个Session实例的缓存中。 - 与数据库中的相关记录对应。 - Session在清理缓存时会根据对象属性的...

    Hibernate悲观锁与乐观锁

    这种策略在数据库层面通常是通过`FOR UPDATE`子句实现,如Hibernate的`LockMode.UPGRADE`,在查询时附加此选项,可以确保数据在处理期间不会被其他事务修改。然而,悲观锁可能会导致大量等待,尤其在网络环境下,多...

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

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

    hibernate三态详解.doc

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

    hibernate关联映射的作用和常用属性解释

    ### Hibernate关联映射的作用与常用属性详解 #### 关联映射概述 在对象关系映射(Object Relational Mapping,简称ORM)技术中,Hibernate作为Java领域内非常成熟且功能强大的框架之一,它允许开发者将Java类映射...

    达内HIBERNATE学习笔记

    - **Hibernate中的实现**:通过ORM(对象关系映射)技术实现对象与数据库表之间的映射。 #### 1.3 ORM - **概念**:Object Relational Mapping,即对象关系映射。 - **作用**:将面向对象的数据模型与关系型数据库...

Global site tag (gtag.js) - Google Analytics