Springaop事务控制
2022-11-24 17:29:45 7 举报
AI智能生成
面向切面 aop 事务控制
作者其他创作
大纲/内容
Springaop事务控制
事务是对数据库的一系列操作,进行统一的提交或者回滚,所有的操作必须一起完成,如果中间出现异常,那么就回滚到之前的数据状态。
事务概念
一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
原子性(atomicity)
事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。几个并行执行的事务,其执行结果必须与按某一顺序串行的结果相一致。
一致性(consistency):
持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该造成其丢失。
持久性(durability)
一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
隔离性(isolation)
事务的四个特性(ACID)
事务
<!-- 配置事务管理器 --><bean id=\"transactionManager\" class=\"org.springframework.jdbc.datasource.DataSourceTransactionManager\"> <property name=\"dataSource\" ref=\"dataSource\"/></bean>
1.配置事务管理器(以JdbcDataSource为例)
<bean id = \"transactionTemplate\" class=\"org.springframework.transaction.support.TransactionTemplate\"> <property name=\"transactionManager\" ref=\"transactionManager\"/></bean>
2.配置事务管理模板
<!-- service层注入transactionTemplate --><bean id = \"accountService\" class=\"com.cfx.service.impl.AccountServiceImpl\"> <property name=\"transactionTemplate\" ref=\"transactionTemplate\"></property></bean>
3.在Service中注入模板
编程式的事务管理
Spring集成了很多内置的事务管理器,最常用两种便是DataSourceTransactionManager和HibernateTransactionManager:DataSourceTransactionManager:用于Spring JDBC抽象框架、iBATIS或MyBatis框架的事务管理;HibernateTransactionManager:用于集成Hibernate框架时的事务管理.
简介
配置事务管理器..(切面) <tx:advice id=\"accountAdvice\" transaction-manager=\"transactionManager\"> <!--配置事务传播性,隔离级别以及超时回滚等问题 --> <tx:attributes> <tx:method name=\"save*\" propagation=\"REQUIRED\" /> <tx:method name=\"del*\" propagation=\"REQUIRED\" /> <tx:method name=\"update*\" propagation=\"REQUIRED\" /> <tx:method name=\"add*\" propagation=\"REQUIRED\" /> <tx:method name=\"*\" rollback-for=\"Exception\" /> </tx:attributes> </tx:advice> <aop:config> <!--配置切点 与切面--> <aop:pointcut id=\"services\" expression=\"execution(* com.cfx.service.*.*(..))\" /> <aop:advisor pointcut-ref=\"services\" advice-ref=\"accountAdvice\" /> </aop:config>因为采用切面的方式,所以其他位置将不需要改变。
基于AspectJ的方式
声明式的事务管理
外框
Spring中的事务管理
0 条评论
回复 删除
下一页