有关于事务

阅读: 评论:0

有关于事务

有关于事务

一、Spring JDBC

1.为什么使用?jdbctemplate对原始的jdbc进行封装,达到简化。

2.怎么使用?

  1. 导入依赖
  2. 在xml中加入数据源配置(也可以将硬编码独立出来变成properties)
  3. 测试(@RunWith @ContextConfiguration)

二、声明式事务控制

1.什么是事务:事务就是程序中完整的一系列逻辑操作,必须所有的操作都能全部成功完成,或者每个操作的更改都会被撤回。

2.为什么需要事务:为了数据安全,保证安全性准确性。

3.特点:

  • 原子性:要么指令全部执行成功,要么全部不执行。当有一个不成功时就会进行数据回滚
  • 一致性:事务的执行使得数据从一个状态转移到另一个状态,到那时对于整个数据的完整性来说是稳定的
  • 隔离性:就是多个并发事务之间是相互隔离开的,不会同时进行,这样每个事务都感觉不到有其他的事务在并发的执行
  • 持久性:当事务正确完成后对于数据的改变是永久性的

4.并发事务导致的问题:

  • 脏读:指一个事务在处理的过程中读取了另一个未提交(回滚)的事务中的数据。
  • 不可重复读:在一个事物的前后多次读取,数据内容不一样,这可能是中间正好另一个事务更新了该数据。
  • 幻读:在一个事务的两次查询总数据笔数不一致,前后多次读取,数量总数不一致。

**Tips:不可重复读和脏读的区别:脏读是某一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据。 

**Tips:幻读和不可重复读都是读取了另一条已经提交的事务(这点就脏读不同),所不同的是不可重复读查询的都是同一个数据项update,而幻读针对的是一批数据整体总量delect,insert(比如数据的个数)。

未授权读取,读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。

授权读取,也称为读提交(Read Committed):允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。

可重复读取(Repeatable Read):禁止不可重复读取和脏读取,但是有时可能出现幻读数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务不能并发执行。仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

5.spring事务管理的两种方式:

编程式事务管理

Platform TransactionManager

TransactionDefinition

TransactionStatus

声明式事务管理

 

本文发布于:2024-01-29 04:58:36,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170647552112859.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:事务
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23