每日问答,Spring事务
Spring的事务有几种方式?谈谈spring事务的隔离级别和传播行为?
声明式事务
使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。
编程式事务管理:
Spring的编程式事务与声明式事务区别
程式事务需要你在代码中直接加入处理事 务的逻辑,可能需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,如在执行a方 法时候需要事务处理,你需要在a方法开始时候开启事务,处理完后。在方法结束时候,关闭事务.
声明式的事务的做法是在a方法外围添加注解或者直接在配置文件中定义,a方法需要事务处理,在spring中会通过配置文件在a方法前后拦截,并添加事务.
二者区别.
编程式事务侵入性比较强,但处理粒度更细.
事务的隔离级别:
数据库系统提供了4种事务隔离级别,在这4种隔离级别中,Serializable的隔离级别最高,Read Uncommitted的隔离级别最低;
· Read Uncommitted 读未提交数据;(会出现脏读)
· Read Committed 读已提交数据;
· Repeatable Read 可重复读;
· Serializable 串行化
事务的传播属性包括:
· Required 业务方法需要在一个事务中运行,如果一个方法运行时已经处在一个事务中,那么加入到该事务,否则为自己创建一个新事务,80%的方法用到该传播属性;
· Not-Supported· Requiresnew· Mandatoky· Supports· Never· Nested