7.spring中的事务
事务,确实是一个极为抽象的概念,我理解为就是一个连续的东西,保证在其中的行为要么全完成,要么全部回滚,什么都没发生一样。
确保数据和资源永远不会处在一种不一致的状况下。
描述事务的4个概念:原子性,一致性,隔离性,持久性。这个在哪里都有解释,只要自己理解了,就行了。spring的事务就像他对持久化的支持一样,基本上都是委托给第3方了,具体说:就是
委托给第3方提供的事务管理器了。事物经常用在关于数据库的操作上,所以spring支持的有jdbc,jdo,jpa,hibernate等,事务管理器可选的非常多,不过他们都是默默的提供事务,只要和spring中的事务打交道,而不用关心这些具体实现。
因为我以后想用hibernate当我的orm解决方案,所以我就着重看hibernate提供的事务管理器。首先是要声明它的事务管理器。当然还是在spring的配置文件中声明。
<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种的事务参数,当然咱们用他自带的就行了。
<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就可以了
@Transactional
public void takeSeat(){
System.out.println("观众们找到自己的座位,都坐下来了");
}
分享到:
相关推荐
Spring in Action中文清晰版(带阅读笔记). Spring in Action中文清晰版(带阅读笔记).
Spring in action的学习笔记,里面有许多代码示例,部分内容是自己根据多方面资料综合而成
Spring in Action CN.001<br>Spring in Action CN.002<br>Spring in Action CN.003<br>Spring in Action CN.004<br>Spring in Action CN.005<br>Spring in Action CN.006<br>Spring in Action CN.007<br>Spring in ...
Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Springcloud学习笔记.md,Spring...
Spring in action Spring in action Spring in action Spring in action Spring in action Spring in action
Spring in Action CN.001<br>Spring in Action CN.002<br>Spring in Action CN.003<br>Spring in Action CN.004<br>Spring in Action CN.005<br>Spring in Action CN.006<br>Spring in Action CN.007<br>Spring in ...
spring in action所需jar包
Spring In Action中文版+英文版+文中源码 Spring In Action中文版+英文版+文中源码
《Spring in Action中文版》适合所有Java开发...《Spring in Action中文版》最后4章描述了Spring是如何为Web层开发提供支持的,如果你是一位Web开发人员,你会发现《Spring in Action中文版》的最后一部分特别有用。
Spring in Action第三版,中文pdf,带书签和书中源码!
spring in action second edition
spring in action! spring in action!
《Spring in Action(第4版)》适合所有Java开发...《Spring in Action(第4版)》最后4章描述了Spring是如何为Web层开发提供支持的,如果你是一位Web开发人员,你会发现《Spring in Action(第4版)》的最后一部分特别有用。
Spring in action 4 + 代码 原版文档,供大家一起学习
Spring Security in Action
Spring in Action, 5th Edition is the fully updated revision of Manning's bestselling Spring in Action. This new edition includes all Spring 5.0 updates, along with new examples on reactive programming...
springInAction第四版中文版,为方便javaweb程序员开发而上传
spring in action 第四版英文源码译文清晰 ,附带随书源码
Spring是掠过Java大地的一阵... 中文版.part4.rar Spring in Action. 中文版.part5.rar Spring in Action. 中文版.part6.rar Spring in Action. 中文版.part7.rar Spring in Action. 中文版.part8.rar