虽然不简单但还是要学的JavaWeb—spring事务管理
来源:互联网 发布:交换机每个端口的带宽 编辑:程序博客网 时间:2024/05/16 17:45
spring 事物管理
什么是事务:事务就是逻辑上的一组操作,这组操作的各个执行单元,要么全部完成,要么全部失败,体现在代码中,可以将一次转账看作是一个事务。
事务的特性:
1.原子性
即组成事务的一组操作,要么全部执行,要么全部不执行,不能单独的进行某个操作。
2.一致性
即事务执行前后,数据库中的数据保持一致
3.隔离性
即事务之间相互隔离,如不能再一个事物写数据的时候另一个事务读数据
根据不同的隔离性,能出现的安全问题有
脏读:一个事务读到了另一个事务未提交的数据。
不可重复读:一个事务范围内多次的对一个数据进行读取,却读到了不同的数据值。
原因:该数据在读取的过程中被另一个事务修改并提交。
虚读(幻读):因两个事务或多个事务的操作,导致产生的结果不符合某事物的要求,(如,事务A更改某数据,事务B又改回来,事务A再次查询发现:我明明改了,为啥没变)
4.持久性
对于已提交的数据,即使系统损坏,或者数据库异常关闭,也不能影响其中的已更改的数据,也就是说,已提交的事物的更新,可以通过备份或者其他方式来找到,而不怕数据的丢失。
/*
* 2017/10/15更
*/
spring 事务管理的三大接口
1.PlatFormTransactionDefinition —— 平台事务管理器
根据Dao层框架不同,可以选择不同的实现类
2.TransactionDefinition —— 事务定义信息
定义事务的隔离级别
定义事务的传播行为
定义事务的超时信息
定义事务是否只读等
3.TransactionStatus —— 事务的具体运行状态
spring事务管理的两种方式
基础配置
1.配置dao层数据源(这里使用dataSourceTransactionManager)<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="" /> <property name="url" value="" /> <property name="username" value="" /> <property name="password" value="" /></bean>2.配置平台事务管理器(TransactionManager)<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSouce" ref="dataSource"></bean>
1.编程式的事务管理
//提供事务模板<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate"> <property name="transactionManager" ref="transactionManager"></bean>
2.声明式的事务管理(重要)
1) 基于AspectJ的XML配置方式
<tx:advice id="myAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="outMoney" propagation="REQUIRED" /> </tx:attributes></tx:advice> --><!-- 配置AOP --><!-- <aop:config><aop:advisor advice-ref="myAdvice" pointcut="execution(public * com.ruitaoad.*.outMoney(..))" /></aop:config>
2)基于AspectJ的注解方式
①开启事务注解 <tx:annotation-driven transaction-manager="transactionManager"/> ②在业务层(业务的java文件)上添加注解@Transactional
————————2017/10/16
- 虽然不简单但还是要学的JavaWeb—spring事务管理
- 虽然不简单但还是要学的JavaWeb—Spring_IOC
- 虽然不简单但还是要学的JavaWeb—Spring_DI
- 虽然不简单但还是要学的JavaWeb—MyBatis
- 虽然不简单但还是要学的JavaWeb—spring框架简介
- 虽然不简单但还是要学的JavaWeb—配置环境
- 虽然不简单但还是要学的JavaWeb—SpringMVC简介
- 虽然神奇但还是要理解的Oracle数据库—基本语句
- Oracle数据库字符集不虽然难懂但还是很有作的
- 虽然老套,但还是有点湿
- 虽然网上很多图片播放的插件,但还是自己写的有成就感。
- 虽然我可能最近在学其他语言,但我最喜欢的还是 asm,c,c++
- sql常用的操作,虽然简单,但长时间不用的话格式还是会忘记
- 教主们:虽然这道题我不会,但Ac还是没问题的。
- 虽然无奈,但要加油
- JAVA 学习开始纪念(虽然学的慢,事情多,但我不会放弃的)
- Oracle(计划虽然被打断了,但时间还是要争回来)
- UESTC 58 任意阶矩阵的乘法 虽然简单但优化还是要思考一下的 而且也使自己意识到了原来没有注意的问题
- eclipse Java导入jar包提示Access restriction解决方法
- 魅族大数据运维平台实践
- 在 sys.servers 中找不到服务器,请执行存储过程 sp_addlinkedserver 以将服务器添
- 201312-4
- 动态规划方法总结
- 虽然不简单但还是要学的JavaWeb—spring事务管理
- C语言中的volatile
- sphinx中文分词搜索coreseek windows下安装与基本使用简介
- codevs3990——中国余数定理:一元模线型方程组
- 如何解决编译时Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
- KNN入门学习笔记
- 3个线程依次轮流打印出75个数
- sem创意 账户设计 sem分词及导入
- 验证