`

事务的理解与spring中的一些配置

阅读更多

事物的四大特性:

原子性:

事务结束的时候,事务中的所有任务必须全部成功完成,否则全部失败,事务回滚到事务开始之间的状态。 

一致性:

即数据库中的所有数据和现实保持一致。如果事务失败数据必须返回到事务执行之前的状态,反之修改数据和现实的同步。 

隔离性:

每个事务必须与其他事务的执行结果隔离开,直到该事务执行完毕,它保证了事务的访问的任何数据不会受其他事务执行结果的影响

持久性:

如果事务成功执行,无论系统发生任何情况,事务的持久性都必须保证事务的执行结果是永久的。 

 

 

事物的传播行为(7种):

*PROPAGATION_MANDATORY: 

规定了方法必须在事务中运行,否则会抛出异常 

 

*PROPAGATION_NESTED: 

使方法运行在嵌套事务中,否则这个属性和PROPAGATION_REQUIRED属性的义相同 

 

PROPAGATION_NEVER 

使当前方法永远不在事务中运行,否则抛出异常 

 

PROPAGATION_NOT_SUPPORTED 

定义为当前事务不支持的方法,在该方法运行期间正在运行的事务会被暂停 

 

*PROPAGATION_REQUIRED 

规定当前的方法必须在事务中,如果没有事务就创建一个新事务,一个新事务和方法一同开始,随着方法的返回或抛出异常而终止 

 

*PROPAGATION_REQUIRED_NEW 

当前方法必须创建新的事务来运行,如果现存的事务正在运行就暂停它 

 

PROPAGATION_SUPPORTS 

规定当前方法支持当前事务处理,但如果没有事务在运行就使用非事务方法执行 

 

 例如: 

    <property name="transactionAttributes"> 

            <props> 

                <prop key="query*">PROPAGATION_REQUIRED,timeout_5,readOnly</prop> 

                <prop key="insert*">PROPAGATION_REQUIRED</prop> 

                <prop key="delete*">PROPAGATION_REQUIRED</prop> 

            </props> 

        </property>    

 

 

 

事物的隔离级别:

        ISOLATION_DEFAULT         

        使用数据库默认的隔离级别 

         ISOLATION_COMMITTED     

大多数主流数据库的默认Spring事务隔离等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。

         ISOLATION_READ_UNCOMMITTED    

保证了读取过程中不会读取到非法数据。Spring事务隔离级别在于处理多事务的并发问题,这是速度最           快的一个隔离级别,但同时它的隔离级别也是最低 

         ISOLATION_REPEATABLE_READ 

保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失

         ISOLATION_SERIALIZABLE 

        这是最高的隔离级别,它可以防此脏读,不可重复读和幻读等问题,但因其侵占式的数据记录完全锁定,导致它影响事务的性能,成为隔离级别中最展慢的一个。 

    注意:并不是所有的资源管理器都支持所有的隔离级别,可针对不同的资源管理使用以上的隔离级别

 

1.5

事物的只读属性:

如果将事务声明为只读的,那么数据库可以根据事务的特性优化事务的读取操作。事务的只读属性需要配合事务的传播行为共同设置。例如: 

    <prop key="query*">PROPAGATION_REQUIRED,readOnly</prop> 

事物的超时属性:

通过设置事务的超时时间,从开始执行事务起,在规定的超时时间内如果没有事务就将它回滚。事务的超时属性以timeout_为前缀和一个整型数字定义,例如: 

    <prop key="query*">PROPAGATION_REGUIRED,timeout_5,readOnly</prop> 

1.6

事务管理器:

Spring的事务管理器有5个,都实现了PlatformTransactionManager接口,如下所示: 

 

DataSourceTransactionManager           JDBC事务管理器 

HibernateTransactionManager            Hibernate事务管理器 

JdoTransactionManager                  JDO事务管理器 

JtaTransactionManager                   JTA事务管理器      

PersistenceBrokerTransactionManager    Apache的OJB事务管理器


分享到:
评论

相关推荐

    spring事务配置的五种方式

    1. **基于XML的全局事务配置**:这种方式通过在Spring配置文件中设置`&lt;tx:advice&gt;`和`&lt;aop:config&gt;`元素来实现事务管理。相比于第一种方式,这种方式更加简洁,适用于所有业务逻辑Bean。 2. **基于注解的事务配置**...

    spring事务配置的5中方式

    Spring 事务配置是Spring框架中不可或缺的一部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager和代理机制。...

    Spring配置JTA事务管理

    Spring框架在企业级Java应用中广泛用于实现...总的来说,Spring配置JTA事务管理是一项关键任务,它确保了在分布式环境下的数据一致性。理解并正确配置JTA事务管理,能够让你的应用程序更加健壮,适应复杂的企业级需求。

    spring几种事务配置详解【精】

    本文将深入探讨Spring中的几种事务配置方式,帮助开发者更好地理解和运用。 1. **编程式事务管理** 编程式事务管理是在代码中显式调用事务API来控制事务的开始、提交、回滚等操作。这种方式直接在业务逻辑代码中...

    在Spring中配置Hibernate事务

    首先,我们需要理解Spring事务管理的两种基本模式:编程式事务管理和声明式事务管理。编程式事务管理需要在代码中显式调用开始、提交、回滚等事务操作,而声明式事务管理则通过在XML或注解中声明事务边界,让Spring...

    spring事务操作试验

    文件名如"spring-jdbc-tran1"、"spring-jdbc-tran2"和"spring-jdbc-tran3"暗示了实验可能涉及Spring与JDBC的事务交互。在Spring中,DataSourceTransactionManager是用于JDBC事务管理的默认实现。使用它,你可以控制...

    Spring事务配置的五种方式

    Spring 事务配置是Spring框架中不可或缺的部分,它用于管理和协调应用程序中的事务边界,确保数据的一致性和完整性。在Spring中,事务配置主要涉及到三个核心组件:DataSource、TransactionManager以及代理机制。...

    spring 事务(6中配置完全降解)

    本篇文章将详细解析Spring中的六种事务配置方法,帮助开发者深入理解并掌握Spring事务的运用。 1. **基于XML的事务配置** Spring支持通过XML配置来管理事务,这是最基础的配置方式。在`spring`的配置文件中,我们...

    Spring基于XML方式配置事务

    在Spring配置文件中,我们需要引入`tx`命名空间,并声明一个`PlatformTransactionManager`实例,例如,对于基于JDBC的事务管理,我们会使用`&lt;bean id="transactionManager" class="org.springframework.jdbc....

    spring 事务管理的理解

    本文将深入探讨Spring中的事务管理,包括其基本概念、工作原理以及如何在实际项目中配置和使用。 首先,我们需要了解什么是事务。事务是一组数据库操作,这些操作要么全部成功,要么全部失败。在事务中,如果任何...

    Spring事务管理Demo

    在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理应用中的事务。Spring事务管理的目的是确保数据的一致性和完整性,...这样可以帮助你更好地理解Spring事务管理的工作原理和实际应用。

    Spring使用XML配置声明式事务

    在Spring框架中,声明式事务管理是实现事务处理...在博文"Spring使用XML配置声明式事务"中,作者详细讲解了每个步骤,并可能通过示例代码展示了如何实际应用这些配置,帮助读者更好地理解和掌握Spring声明式事务管理。

    spring 事务代理配置

    1. **定义数据源**:首先,需要在Spring配置文件中定义数据源。数据源是所有数据库交互的基础,这里使用`DriverManagerDataSource`作为示例,它可以通过简单的属性设置来连接数据库。 2. **创建SessionFactory**:...

    Spring中的四种声明式事务的配置

    在Spring框架中,声明式事务管理是通过AOP(面向切面编程)实现的,它允许开发者无需在业务代码中显式处理事务,而是通过配置来控制事务的边界。Spring提供了四种不同的方式来配置声明式事务,这使得事务管理更加...

    Spring事务管理配置

    事务传播行为是理解Spring事务管理配置时的一个关键概念。除了`PROPAGATION_REQUIRED`外,Spring还支持其他几种传播行为,包括但不限于: - `PROPAGATION_SUPPORTS`:如果当前存在事务,则支持该事务;如果不存在...

    spring 与 spring mvc 整合 配置讨论

    8. **源码分析**:深入理解Spring和Spring MVC的源码,有助于优化配置和解决问题。例如,了解DispatcherServlet如何调度请求,以及HandlerMapping如何找到合适的处理器。 9. **工具**:IDEA、Eclipse等集成开发环境...

    spring中事物配置

    总结一下,Spring的声明式事务管理通过AOP机制,使得开发者无需在业务代码中显式地开始和结束事务,而是通过配置决定哪些方法在事务中执行。这种方式极大地提高了代码的可读性和可维护性。在实际项目中,根据具体...

    Spring事务五种不同的代理配置

    总的来说,掌握 Spring 事务管理的五种配置方式,有助于我们在开发中更好地控制事务边界,保证数据的一致性和完整性。理解并灵活运用这些知识,能够提升我们的代码质量,降低系统风险,提高系统的稳定性和可靠性。

    Spring事务管理的几种配置方式,

    本篇将详细讲解Spring中的事务管理配置,帮助初学者理解并掌握这一重要概念。 1. 声明式事务管理 声明式事务管理是Spring中最常用的事务管理方式,它通过AOP(面向切面编程)来实现。在配置文件中,我们可以通过`...

Global site tag (gtag.js) - Google Analytics