大家分层架构 事务
1:搭建分层架构
事务:
什么是事务?
是一个不可分割的逻辑单元, 对于 N条操作,要么都提交,要么都不提交
事务的四大特性:
原子性:事务中操作不可再分
一致性:要么都提交,要么都不提交
隔离性:各个事务之间互不干扰
持久性:事务操作会被永久操作
start transaction
begin transaction
commit
rollback
事务四种隔离级别和七种传播行为:
隔离级别: 脏读 重复读 幻读 读已提交(READ_COMMITED)
ISOLATION_READ_UNCOMMITTED 读未提交 33k--->平平 ---> 38k
ISOLATION_READ_COMMITTED 读已提交 cmy--->娶妻生子 脏读
ISOLATION_REPEATABLE_READ 可重复读 重复的查询语句 脏读 不可重复读
begin transaction
insert into user values('张三',123);
select * from user
delete from user where name='张三'
select * from user
commit;
ISOLATION_SERIALIZABLE 串行化 脏读 重复读 幻读
传播行为:在使用事务机制操作的情况下,如果要做的操作 七个选项
PROPAGATION_REQUIRED 以事务的方式进行操作,如果当前事务存在,则使用当前事务。如果不存在,则创建一个新事务
PROPAGATION_REQUIRES_NEW
以事务的方式进行操作,如果当前事务存在,挂起当前事务。并创建一个新事务。
PROPAGATION_SUPPORTS
判断是否使用的是事务方式操作,使用该事务,如果不是 以非事务的方式操作
PROPAGATION_NOT_SUPPORTED
非事务的方式操作,如果存在当前存在事务,则挂起当前事务。以非事务的方式操作
PROPAGATION_MANDATORY
一定要以事务进行操作,如果不存在事务,则抛出异常
PROPAGATION_NEVER
非事务的方式进行操作,如果存在事务,则抛出异常
PROPAGATION_NESTED
事务操作,判断当前事务是否存在,如果存在,则在当前事务中生成一个嵌套着的事务,如果不存在作用于 PROPAGATION_REQUIRED 相同
例子:转账
AOP:
编程式AOP: ProxyFactory 实例 setTarget setAvice
声明式AOP: ProxyFactoryBean
target属性-->代理对象
advice
自动顾问代理生成器
AspectJ 注解的方式
Aspect Xml节点的方式
事务增强:AOP
编程式事务:TransactionTemplate
声明式事务: tx节点定义通知
aop实现切面