-
事物的特性
查看全部 -
刚好五个字
查看全部 -
五个字刚好
查看全部 -
没有
查看全部 -
事务的传播行为应用场景:业务层方法之间的调用 Service.method1 + service.method2
查看全部 -
个人总结下:
脏读就是读取了别人事务还未commit的数据。
不可重复读:强调的是同一个事务对同行数据的多次读取不一致的结果(途中被其他事务修改)ps:同样的条件, 你读取过的数据,再次读取出来发现值不一样了
幻读:按某个条件修改数据后,发现有新增的数据(却没被修改),应该是眼瞎了(实际上是被其他事务新增了几条数据 重点是在新增)ps:同样的条件, 第 1 次和第 2 次读出来的记录数不一样
事务隔离级别就是针对以上的三种错误的解决方案。
顾名思义:
read uncommited 意为可以读取其他事务未提交的数据。那问题是分分钟有。即不锁定任何行
read committed 意为只可读取事务已提交的数据。可防止脏读,但是不可重读不能防止(不能防止的原因在于 事务A中查询C数据, 事务B修改C为C'并且提交, A事务继续读取C时会发现C’)同理不能防止幻读 ps2:锁定当前行
REPEATABLE_READ 锁定所有指定的所有行。可防止脏读和不可重复读,但是别的事务依旧可以进进出出吞吞吐吐些别的东西。
SERIALIZABLE:锁表,啥都干不了。等事务完全处理完并提交,其他事务才可以更新or查询or新增。
查看全部 -
幻读 : 是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。
e.g.
目前工资为1000的员工有10人。
1.事务1,读取所有工资为1000的员工。
2.这时事务2向employee表插入了一条员工记录,工资也为1000
3.事务1再次读取所有工资为1000的员工 共读取到了11条记录,
解决办法:如果在操作事务完成数据处理之前,任何其他事务都不可以添加新数据,则可避免该问题引用自http://uule.iteye.com/blog/1109647
查看全部 -
不可重复读 :是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。
e.g.
1.在事务1中,Mary 读取了自己的工资为1000,操作并没有完成
2.在事务2中,这时财务人员修改了Mary的工资为2000,并提交了事务.
3.在事务1中,Mary 再次读取自己的工资时,工资变为了2000解决办法:如果只有在修改事务完全提交之后才可以读取数据,则可以避免该问题
引用自http://uule.iteye.com/blog/1109647
查看全部 -
脏读 A读取到了 B事务还未commit的数据C',若B被回滚则数据可能回滚为C,则A读到的数据C’是无效的。
查看全部 -
事务管理器 PlatfromTransactionManager 是根据持久层框架的不同选择对应的事务管理器。一般选择 DatasourceTransactionManager
查看全部 -
课程总结 几种spring实现事务控制的区别和使用场景,开发中最常用的是最后两种申明式事务。
1.基于aspect的切面式xml配置事务,配置稍复杂,但清晰可见事务使用范围,无需修改代码.
2.基于注解的事务 配置简单,但需要修改代码,总的来说也简单。
查看全部 -
基于注解方式的事务控制。在xml中开启注解式事务驱动。在所定义的方法或类前开启注解。
注解的部分含义如下
查看全部 -
编程式事务
查看全部 -
事物管理三个接口
事物管理器:platformTranscationManager
事物定义;TranscationDefault
事物状态:TranscationStatus
查看全部 -
事物是逻辑上的一组操作,要么都执行,要么都不执行
事物的特性:
1、原子性:事物是最小的执行单位,不允许分割
2、一致性:执行事物前后,数据保持一致
3、隔离性:并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事物之间数据库是独立的
4、持久性:事物一旦提交,就会被数据库记录
查看全部
举报