`

hibernate事务

 
阅读更多

关键字: hibernate
1. 介绍数据库事务、事务隔离级别、悲观锁、乐观锁等概念。

2.数据库ACID特征:

Atomic(原子性):指整个数据库事务是不可分割的工作单元。

Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑
上的一致性。

Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据
时,每个事务都有各自的完整数据空间。

Durability(持久性):指的是只要事务成功结束,它对数据库所作的更新就必须
永久保存下来。

3.数据库系统支持两种事务模式:

自动提交模式:每个SQL语句都是一个独立的事务,当数据库系统执行完一个SQL语
句后,会自动提交事务。

手动提交模式:必须由数据库客户程序显示指定事务开始边界和结束边界。

4.MySQL中数据库表分为3种类型:INNODB、BDB和MyISAM,其中MyISAM不支持数据
库事务。MySQL中create table 语句默认为MyISAM类型。

5.对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采
取必要的隔离机制,就会导致各种并发问题,这些并发问题可归纳为以下几类

A.第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。

B.脏读:一个事务读到另一个事务为提交的更新数据。

C.虚读:一个事务读到另一个事务已提交的新插入的数据。

D.不可重复读:一个事务读到另一个事务已提交的更新数据。

E.第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一个事务已提交的
更新数据。

6.数据库系统提供了四种事务隔离级别供用户选择:

A.Serializable(串行化):一个事务在执行过程中完全看不到其他事务对数据库
所做的更新。

B.Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经
提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。

C.Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已
经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。

D.Read Uncommitted(读未提交数据):一个事务在执行过程中可以拷打其他事务
没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。
对于多数应用程序,可以有优先考虑把数据库系统的隔离级别设为Read
Commited,它能够避免脏读,而且具有较好的并发性能。尽管它会导致不可重复
读、虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以
由应用程序采用悲观锁或乐观锁来控制。

7.当数据库系统采用read Commited隔离级别时,会导致不可重复读喝第二类丢失
更新的并发问题,可以在应用程序中采用悲观锁或乐观锁来避免这类问题。从应用
程序的角度,锁可以分为以下几类:

A.悲观锁:指在应用程序中显示的为数据资源加锁。尽管能防止丢失更新和不可重
复读这类并发问题,但是它会影响并发性能,因此应该谨慎地使用。

B.乐观锁:乐观锁假定当前事务操作数据资源时,不回有其他事务同时访问该数据
资源,因此完全依靠数据库的隔离级别来自动管理锁的工作。应用程序采用版本控
制手段来避免可能出现的并发问题。

8.悲观锁有两种实现方式:

A.在应用程序中显示指定采用数据库系统的独占所来锁定数据资源。SQL语
句:select ... for update,在Hibernate中使用get,load时如
session.get(Account.class,new Long(1),LockMode,UPGRADE)

B.在数据库表中增加一个表明记录状态的LOCK字段,当它取值为“Y”时,表示该记
录已经被某个事务锁定,如果为“N”,表明该记录处于空闲状态,事务可以访问
它。增加锁标记字段就可以实现。

9.利用Hibernate的版本控制来实现乐观锁

乐观锁是由程序提供的一种机制,这种机制既能保证多个事务并发访问数据,又能
防止第二类丢失更新问题。

在应用程序中可以利用Hibernate提供的版本控制功能来视线乐观锁,OR映射文件
中的<version>元素和<timestamp>都具有版本控制的功能,一般推荐采用<version>

分享到:
评论

相关推荐

    Spring Hibernate 事务处理 详细说明

    3. **Hibernate事务配置:**在Spring中,需要配置Hibernate SessionFactory,并将其注入到需要进行数据库操作的服务中。同时,通过`PlatformTransactionManager`接口(如HibernateTransactionManager)配置事务管理...

    Spring Hibernate事务实例

    2. Hibernate事务管理:使用`HibernateTransactionManager`结合SessionFactory进行事务控制。 3. AOP(面向切面编程)在事务管理中的应用:`TransactionInterceptor`基于AOP拦截方法调用,处理事务。 4. 配置事务...

    Hibernate事务(源码)

    **Hibernate事务管理详解** 在Java开发中,尤其是在企业级应用中,事务管理是不可或缺的一部分。Hibernate作为一款流行的ORM(对象关系映射)框架,提供了强大的事务处理能力。本篇文章将深入探讨Hibernate中的事务...

    详解Hibernate事务处理机制

    ### 详解Hibernate事务处理机制 #### 一、引言 Hibernate作为一款优秀的对象关系映射(ORM)框架,在Java开发领域扮演着极其重要的角色。它不仅简化了数据持久化的复杂性,还提供了一系列强大的功能来支持高效的...

    hibernate事务管理机制.doc

    【hibernate事务管理机制】是指在使用Hibernate框架进行数据库操作时,如何管理和协调事务的一系列规则和策略。事务管理是确保数据一致性、完整性和并发控制的重要机制。 **悲观锁**是预防性的锁定策略,它假设并发...

    spring hibernate 事务管理学习笔记(一)

    本文将深入探讨Spring与Hibernate整合时的事务管理,帮助你更好地理解和运用这些技术。 首先,Spring框架是Java企业级应用的基石,它提供了一种依赖注入(Dependency Injection,DI)的方式,使得组件之间的耦合度...

    hibernate事务,并发及缓存管理实例

    一、Hibernate事务管理 在数据库操作中,事务确保了数据的一致性和完整性。Hibernate提供了四种事务隔离级别:读未提交(READ UNCOMMITTED)、读已提交(READ COMMITTED)、可重复读(REPEATABLE READ)和串行化...

    在Spring中配置Hibernate事务

    在Spring框架中集成和配置Hibernate事务管理是企业级Java应用中的常见实践,它能提供高效且灵活的事务处理策略。Spring作为一款强大的依赖注入(DI)和面向切面编程(AOP)容器,能够轻松地管理和协调不同数据访问...

    Hibernate 事务和并发控制

    本文将深入探讨Hibernate中的事务和并发控制,这对于开发高效、稳定的数据库应用至关重要。 首先,我们来理解Hibernate中的事务管理。在数据库操作中,事务是保证数据一致性的重要手段。一个事务包含了一组数据库...

    spring hibernate 事务管理学习笔记(二)

    在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...

    JDBC和hibernate事务的详解

    **JDBC与Hibernate事务详解** 在Java开发中,数据库事务管理是确保数据一致性、完整性和原子性的重要机制。本讲解将深入探讨JDBC(Java Database Connectivity)和Hibernate两种不同的技术在处理事务时的方法和特点...

    Hibernate事务

    Hibernate 事务管理是 ORM 框架中的重要组成部分,它负责确保数据操作的一致性和完整性。在 Hibernate 中,事务管理可以基于 JDBC Transaction 或 JTA (Java Transaction API) 进行,这两种方式各有特点。 首先,...

    hibernate 事务管理注意事项

    ### hibernate 事务管理注意...综上所述,Hibernate事务管理的合理配置对于保证系统的稳定性和数据一致性至关重要。开发者应该充分了解Hibernate的缓存机制及其对事务管理的影响,并根据实际情况灵活调整事务管理策略。

    spring mvc+hibernate 实现事务管理(全注解版)

    2. **Hibernate事务**: Hibernate本身也提供了一种事务管理机制,但在Spring环境中,我们通常使用Spring的事务管理器来协调。当@Transactional注解应用于方法上,Spring会在该方法执行前后自动管理事务的开始和结束...

    spring配置hibernate事务

    在Spring框架中配置Hibernate事务管理是一项关键任务,它允许开发者以声明式的方式处理数据库操作的事务性,确保数据的一致性和完整性。以下是如何在Spring中配置Hibernate事务的详细步骤和概念解释。 首先,理解...

    Hibernate事务控制[定义].pdf

    "Hibernate事务控制"主要关注在Hibernate中如何管理和协调事务,以满足ACID原则,即原子性、一致性、隔离性和持续性。 首先,事务是数据库操作的基本单元,它确保一系列数据库操作要么全部成功,要么全部回滚。原子...

    Spring AOP管理Hibernate事务(TransactionInSpringAOP)

    本篇文章将深入探讨如何在Spring AOP中实现Hibernate事务管理,以及这一过程中的关键概念和技术细节。 首先,让我们了解什么是Spring AOP。AOP是一种编程范式,它允许程序员定义“切面”,这些切面是跨越多个对象的...

    spring整合hibernate实现事务处理

    在`Spring_1800_Spring_Hibernate_Transaction_Annotation`这个压缩包文件中,很可能包含了使用注解方式实现Spring整合Hibernate事务处理的相关示例代码和配置文件。通过阅读和理解这些代码,你可以更好地掌握这一...

Global site tag (gtag.js) - Google Analytics