您的位置:首页 > 编程语言 > Java开发

Spring事务管理(未完待续)

2017-04-15 11:05 127 查看

事务ACID四大特性

原子性(Atomic)
事务是由一个或多个活动组成的一个工作单元
原子性确保事务中的所有操作全部发生或全部不发生
一致性(Consistent)
一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致状态,现实的数据不应该被损坏
隔离性(Isolated)
事务允许多个用户对相同的数据进行操作,每个用户的操作不会与其他用户纠缠在一起。
事务应该被彼此隔离,避免同步读写相同数据的情况发生
持久性(Durable)
一旦事务完成,事务的结果应该持久化,这样能从任何的系统崩溃中恢复。这涉及到讲结果存储到数据库或其它形式的持久化存储中


ThreadLocal

Spring通过各种模版类降低了开发者使用各种数据持久技术的难度,这些模版是线程安全的。使用模版类访问底层数据,根据不同的持久化技术,需要绑定数据连接或会话等资源,而这些资源本身是非线程安全的,资源池只是解决缓存问题
对象是非线程安全的应该采用synchronized进行同步,但模版类并未采用线程同步机制,因为同步会降低并发性,影响系统性能
ThreadLocal为解决多线程并发问题提供新的解决方案,Spring事务管理的底层技术离不开它
ThreadLocal是线程的一个本地化对象。当工作于多线程中的对象使用它维护变量时,ThreadLocal为每个使用该变量的线程分配一个独立的变量副本。从线程的角度看,这个变量就是线程的本地变量


ThreadLocal基础知识

同步加锁是以时间换空间来实现线程安全(不合适高并发)
ThreadLocal是以空间换时间来实现线程安全
Spring使用ThreadLocal解决线程安全问题


Spring对事务管理的支持

Spring提供事务模版类TransactionTemplate,配合使用事务回调TransactionCallback指定具体的持久化操作就可以通过编程方式实现事务管理,而无需关注资源获取、复用、释放、事务同步和异常处理操作
Spring事务管理SPI(Service Provider Interface)的抽象层包括三个接口:
TransactionDefinition
TransactionStatus
PlatformTransactionManager
Spring提供对编码式事务和声明式事务管理的支持
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: