spring学习总结015 — spring事务
本文使用的是spring + mybatis,数据库用的是MySql,说事务的传播行为之前先介绍一个SSM开发中很好用的一个IDEA插件 — Easy Code
Easy Code插件
该插件用来基于数据库表来生成开发中用到的entiry类、mapper接口、mapper.xml等代码,免去了手工定义的麻烦
使用方法:
1、IDEA连接mySql,选中数据库表然后右键,选择EasyCode -> Generate Code
2、在弹出的对话框中填写要生成的代码及所在的包名
spring事务
事务的特性
- 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
- 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
- 隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
- 持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。
编程式事务管理
使用TransactionTemplate或者PlatformTransactionManager —– 这种方式没怎么用过,不知道咋写例子
声明式事务管理
声明式事务基于AOP实现,本质是对方法进行拦截,在方法执行前植入或者创建事务,在方法执行后根据执行结果做事务的提交或者回滚;
用法:
1、声明c3p0数据源为bean
<bean class="com.mchange.v2.c3p0.ComboPooledDataSource" id="dataSource"> <property name="user" value="${user}" /> <property name="password" value="${password}" /> <property name="driverClass" value="${driver}" /> <property name="jdbcUrl" value="${url}" /> </bean>