事务,确实是一个极为抽象的概念,我理解为就是一个连续的东西,保证在其中的行为要么全完成,要么全部回滚,什么都没发生一样。
Spring中的事务 :
事务,确实是一个极为抽象的概念,我理解为就是一个连续的东西,保证在其中的行为要么全完成,要么全部回滚,什么都没发生一样。
确保数据和资源永远不会处在一种不一致的状况下。
描述事务的4个概念:原子性,一致性,隔离性,持久性。这个在哪里都有解释,只要自己理解了,就行了。spring的事务就像他对持久化的支持一样,基本上都是委托给第3方了,具体说:就是委托给第3方提供的事务管理器了。事物经常用在关于数据库的操作上,所以spring支持的有jdbc,jdo,jpa,hibernate等,事务管理器可选的非常多,不过他们都是默默的提供事务,只要和spring中的事务打交道,而不用关心这些具体实现。
因为我以后想用hibernate当我的orm解决方案,所以我就着重看hibernate提供的事务管理器。首先是要声明它的事务管理器。当然还是在spring的配置文件中声明。
Xml代码
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
当然你给配hibernate的 sessionFactory了。这个很好配置的,到处都有资料,这里就不贴出来了。
HibernateTransactionManager把事务委托给一个从当前Hibernate会话中检索到的org.hibernate.Transaction对象。当一个事务完成时, HibernateTransactionManager就调用那个Transaction对象的commit方法,要是失败了,就调用rollback()方法。
可以用编程的方式编写事务,当然有更好的方法,那就是声明式事务。
首先,先给明白声明式事务的事务参数。
共有5种 :
1.传播方式:一个事物应该被挂起还是应该被启动,或者是一个方法是否应该在事务性上下文中运行。
2.隔离级别,一个事物可能受到其他并发事物活动影响的程度。(其中有脏读,不可重复读,换读等概念)
3.只读:后端数据库可以对只读的事物自动进行优化,但是事物必须具有一个新事物的传播行为。
4.事物超时:为了一个程序很好的执行,它的事物不能运行太长事件。
5.回滚规则:可以自己定义,默认情况下,事物只出现运行异常时回滚,出现受阻异常时不回滚。
事物的实现也是通过代理的,代码和之前aop的差不多,声明一个xxxTarget,声明代理接口,配置事物管理器,最后配置规则。
重点想说的是:最简单的事物实现方式,通过注解。
采用如下配置方案,配置一个事务的拦截器,它的属性就是之前定义的事务处理器,它的transactionAttributeSource这个属性,就是让你填写,之前5种的事务参数,当然咱们用他自带的就行了。
Xml代码
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributeSource">
<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
</property>
</bean>
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager"/>
<property name="transactionAttributeSource">
<bean class="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"/>
</property>
</bean>
现在就可以在方法中直接用@Transactional就可以了
Java代码
@Transactional
public void takeSeat(){
System.out.println("观众们找到自己的座位,都坐下来了");
}
分享到:
相关推荐
首先,我们来了解什么是Spring事务管理。在分布式系统或数据库操作中,事务管理是确保数据一致性和完整性的关键机制。Spring框架提供了一种声明式和编程式的事务管理方式,允许开发者轻松地控制事务边界,确保事务的...
Spring 框架是Java开发中...理解并熟练掌握Spring事务管理,对于提升应用程序的稳定性和可靠性至关重要。在实际开发中,结合声明式事务管理、事务传播行为、隔离级别和回滚规则,可以有效地确保数据的完整性和一致性。
在Java企业级应用开发中,Spring框架以其强大的功能和灵活性被广泛应用,特别是在事务管理方面。Spring提供了全面的事务管理解决方案,...了解并熟练掌握Spring事务管理,对于提升Java应用的稳定性和可靠性至关重要。
本篇文章将深入探讨Spring事务管理的五种方法,旨在帮助开发者更好地理解和运用这一核心特性。 首先,我们来了解什么是事务。在数据库操作中,事务是一组逻辑操作,这些操作要么全部成功,要么全部失败,确保数据的...
标题“Spring事务管理失效原因汇总”指出了本文的核心内容是分析在使用Spring框架进行事务管理时可能遇到的问题及其原因。描述部分进一步说明了事务失效的后果往往不明显,容易在测试环节被忽略,但在生产环境中出现...
在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。
在本文中,我们将深入探讨Spring框架中的事务管理。Spring是一个广泛应用的Java企业级应用开发框架,它提供...如果你想要深入了解,可以参考提供的博客链接或其他相关资料,进一步学习Spring事务管理的细节和最佳实践。
3、了解Spring事务管理的3个核心接口; 4、了解Spring事务管理的两种方式; 5、掌握基于XML和Annotation的声明式事务管理的使用。 二.实验内容 (1)使用Spring JDBC实现书店的购书过程,即有如下一个BookShopDao接口...
### Spring事务管理详解 #### 一、Spring事务管理的重要性及必要性 在现代软件开发中,事务管理是一项至关重要的...通过深入了解Spring事务管理的不同方面,开发者可以更好地利用这些特性来构建高质量的应用程序。
你可以根据这个文件进一步了解和学习Spring事务管理的实践。 总结来说,Spring的事务管理提供了强大且灵活的工具,使得开发者能够在不关心底层实现的情况下,轻松地管理数据库事务。无论是编程式还是声明式,都能...
这个名为"Spring事务小demo"的项目提供了一个实践示例,帮助开发者了解Spring事务处理的基本概念和用法。 首先,Spring事务管理是Spring框架的核心特性之一,它允许我们以声明式或编程式的方式管理事务。声明式事务...
首先,了解Spring事务管理的基本概念。在多线程环境中,事务管理是至关重要的,它负责确保一组数据库操作要么全部成功,要么全部失败。Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。声明式...
Spring事务管理提供了一种声明式的方式来控制事务边界,使得开发者无需显式地调用开始、提交或回滚事务。 在Spring中,有以下两种事务管理方式: 1. **编程式事务管理**:开发者需要手动调用`...
Spring事务详细讲解 在 Spring 框架中,事务管理扮演着非常重要的角色。Spring 声明式事务让我们从复杂的事务处理中得到解脱,使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要...
在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...
在Java企业级应用开发中,Spring框架以其强大的功能和易用性成为了不可或缺的一部分。其中,Spring的事务管理是其核心特性之一,它...了解和熟练掌握Spring事务管理,对于提升Java企业级应用的稳定性和可靠性至关重要。
本篇文章将详细解析Spring中的六种事务配置方法,帮助开发者深入理解并掌握Spring事务的运用。 1. **基于XML的事务配置** Spring支持通过XML配置来管理事务,这是最基础的配置方式。在`spring`的配置文件中,我们...
在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。Spring提供了多种事务管理配置方式,适合不同的应用场景。本篇将详细讲解Spring中的事务管理配置,帮助初学者理解并掌握这一重要概念。...
Spring框架在企业级Java应用中广泛用于实现事务管理,而JTA(Java Transaction API)是Java平台上的标准事务处理API,适用于分布式环境。本篇文章将深入探讨如何在Spring中配置JTA事务管理,以实现跨数据库和资源的...