For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习软件编程开发技术,而本文我们就通过案例分析来简单了解一下,Java程序员需要掌握哪些Spring事务知识。
一、概念
事务的概念很多,只有对整体有一个把控,才能见微知著。比如一上来直接问REQUIRED,你一定很懵,但了解了大致关系后,就很清晰:Spring事务定义了六大属性-》其中一个属性是传播机制-》REQUIRED是其中一个,默认的传播机制。
1.1框架概览
对于数据库事务,国际性认可的标准是ACID,即原子性、一致性、隔离性、持久性。Spring作为一个支持数据库持久化的框架,定义了六大属性来实现这四大特性。属性分别是:事务名称、隔离级别(4种)、超时时间、是否只读、传播机制(7种)、回滚机制。用户使用时定义其中的一种或几种,再结合Spring对底层数据库的驱动,即可实现ACID良好的数据库操作了。
1.2重点属性
ReadUncommitted
官方建议:
RepeatableRead(一致性3星,性能2星)>ReadCommitted(一致性2星,性能3星)>ReadUncommitted(一致性1星,性能4星)>Serializable(一致性4星,性能1星)。
我的建议:
高并发场景使用ReadCommitted,低并发场景使用RepeatableRead。其它两个没用过(ReadUncommitted一致性太低了;Serializablesql序列化,数据库会成为瓶颈)。
二、源码风格
这里我们主要看JuergenHoeller的源码风格,发现他很好的遵循了Spring的一贯风格:
1.预留方法给customer自己定义扩充,Spring一贯喜欢预留各种后门...
2.利用各种设计模式:
1)template模板模式:构造事务模板,编程式事务源码
2)代理模式:生成增强代理类,声明式事务源码
3.Spring-AOPMethodInterceptor方法拦截器:申明式事务中使用TransactionInterceptor事务拦截器,该类实现了MethodInterceptor接口,继承自Interceptor接口,终在业务方法invoke()前后进行增强。
4.面向接口编程,高度抽象:PlatformTransactionManager接口定义getTransaction、commit、rollback。AbstractPlatformTransactionManager抽象类实现通用的获取事务、提交事务、回滚事务。DataSourceTransactionManager继承抽象类,并实现特性接口。
当然看过springtransaction包,除了Spring的一贯风格外,大的体会是注释丰富,日志丰富(尤其是debug,甚至不需要debug光看日志就可以清晰知道核心流程)。
三、应用
本系列针对Spring+Mybatis+Mysql,讲解了2种的事务的实现方案(数据库事务采用DataSourceTransactionManager来管理事务,支持JDBC驱动,通过Connection和数据库进行交互。):
1.编程式事务
2.申明式事务
并测试了4种隔离级别和7种传播机制。相信通过实测,大家对spring事务的使用有一定的掌握。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。