GET技能
1 前端
bootstrap
jquery
freemarker
css,js封装
2 后端
Spring mvc
Spring aop
mybatis
shiro
3 构建部署
Maven构建
新浪SAE部署
Nginx部署
Spring事务管理
- 事务
- Spring事务管理的一组API
- Spring的编程式事物管理
- Spring的声名式事务管理
事物介绍
定义
事物是指逻辑上的一组操作,这组操作要么全部成功, 要么全部失败
例如: 支付宝转账
特性
- 原子性
事物是一个不可分割的工作单位,操作要那么都发生,要么都不发生
- 一致性
事物执行前后数据 的完成性必须保持一致
- 隔离性
多个用户并发访问数据库的时候,一个用户事务不能被其他用户的事务干扰
多个并发事物需要相互隔离
- 持久性
一个事务一旦被提交,数据库改变是永久的
即使数据库故障也不应该发生改变
Spring事务管理
Spring事务管理高层抽象主要包括3个接口
-
PlatformTransactionManager
事务管理 回滚
-
TransacationDefinition
事物定义信息(隔离、传播、超时、只读)
-
TransactionStatus
事物具体的运行状态
PlatformTransactionManager
平台事物管理器
Spring为不同的持久化框架提供了不同的PlatformTransactionManager接口
若不考虑隔离性,会引发安全问题
- 脏读
一个事物读取了另一个事物改写但还没提交的数据,
若这些数据被回滚那么数据是无效的
- 不可重复读
在同一个事物中,多次读取同一数据返回的结果不同
- 幻读
一个事物读取了几行记录后,另一个事物插入一些记录
再后来的查询中,第一个事物机会发现有些原来没有的记录
TransactionDefinition
定义事物隔离
Mysql :REPEATABLE——READ
ORACLE:READ——COMMITTED
定义事物传播行为
Spring事物管理
编程式的事物管理
- 在实际应用中很少使用
- 通过Transaction Trmplate手动管理事物
使用XML配置声名式事务管理
- 开发中推荐使用(代码入侵性最小)
- Spring的声名式事物是通过AOP实现的
编程式的事务控制
- 在AccountService中使用TransactionTemplate
- TransactionTemlpate依赖DataSourceTransactionManager
- DataSourceTransactionManager依赖DataSource创建
声名式的事物管理
使用XML配声名式事物(原始方式)
IOC 控制反转
1 控制什么?
2 反转什么?
//car的反转不由人来创建
public class Zhangsan{
private Buick car = new BUick();
pirvate Car car;
public ZhangSan(car car){
this.car = car;
}
public void gohome(){
car.start();
car.stop();
car.turnleft();
}
}
IOC约定
- 所有的Bean的生命周期交由ioc管理
- 所有被依赖的bena通过构造方法执行注入
- 被依赖的Bean需要优先创建