【事务】知识点整理

事务

一.事务的基本介绍

        1.概念

                如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。


例子:张三给李四转账500元

  1. 查询张三账户余额是否大于500
  2. 张三账户  金额-500
  3. 李四账户  金额+500

若在第二步出现了异常,则系统不执行下面的第三部,现实生活中则会导致张三账户少了500元,而李四账户却没有收到此500元,即转账出现了问题。

为了不让此类异常发生,因此我们引入【事务管理】 ,如果上述例子被事务管理,则该例子的所有操作要么同时成功,要么同时失败,若在程序进行中出现异常则会产生回滚操作。


           2.操作:

                          (1).开启事务:start transaction

                          (2).回滚:rollback

                          (3).提交:commit

回滚事务会使数据回滚至开启事务的位置

                        (4).mysql数据库中事务默认自动提交

                                事务提交的两种方式

                                        自动提交:

                                                mysql就是自动提交的

                                                一条DML(增删改)语句会自动提交一次事务

                                        手动提交:

                                                需先开启事务,再提交

二.事务的四大特征

        1.原子性

                事务是不可分割的最小操作单位,要么同时成功,要么同时失败。

        2.持久性

                当事务提交或回滚后,数据库会持久化保存数据

        3.隔离性

                多个事物之间相互独立。(实际上会产生相互影响,还需要了解隔离机制)

        4.一致性

                事物操作前后,数据总量不变。

三.事务的隔离级别(了解)

        1.概念

                多个事物之间是隔离的,相互独立的。但是如果对个事务操作同一数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。

        2.存在的问题

                (1).脏读:一个事物,读取到另一个事务中没有提交的数据。

                (2).不可重复读(虚读):在同一个事务中,两次读取到的数据不一样。

                (3).幻读:一个事务操作(DML)数据表中所有记录,另一个事务添加了一条数据,则第一个事物查询不到自己的修改。

        3.隔离级别

                (1).read uncommitted:读未提交

                        产生的问题:脏读,不可重复读,幻读。

                (2).read committed :读已提交 (oracle默认)

                        产生的问题:不可重复读,幻读

                (3).repeatable read:可重复度(mysql默认)

                        产生的问题:幻读

                (4).serializable:串行化

                        可以解决所有的问题

注意:隔离级别从小到大安全性越来越高,但是效率越来越低。

        数据库查询隔离级别

                select @@tx_isolation;

        数据库设置隔离级别

                set global transaction isolation level 级别字符串;

演示

        set global transaction isolation level read uncommitted;设置隔离级别

        start transaction;开启事务

        --转账操作

        upadate account set balance =balance - 500 where id=1;

        upadate account set balance =balance + 500 where id=2;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java Spring是一个广泛使用的轻量级开源框架,用于构建企业级Web应用程序。Spring框架提供了模块化的解决方案,简化了企业级应用的开发、管理以及依赖注入(Dependency Injection,DI)等功能。以下是一些Spring基础知识点的整理: 1. **IoC(Inversion of Control)和DI(Dependency Injection)**:Spring的核心思想就是IoC,它反转了传统的控制流动,使对象之间通过容器管理彼此的依赖关系,而不是硬编码。DI是IoC的一种具体实现方式,通过配置文件或注解自动为对象提供所需依赖。 2. **Bean的作用域和生命周期**:Spring中的Bean有多种作用域,如Singleton(单例)、Prototype(原型)、Request、Session等。每个Bean都有其生命周期,从创建、初始化到使用和销毁。 3. **Spring配置文件**:通常使用XML配置文件(如applicationContext.xml)或Java配置(@Configuration classes)来定义Spring应用的组件和依赖关系。 4. **AOP(Aspect Oriented Programming)**:Spring AOP支持面向切面编程,可以编写跨组件的行为,比如日志记录、事务管理等。 5. **Spring MVC**:Spring提供的web MVC架构,包括Controller处理HTTP请求,Model负责数据访问和业务逻辑,View负责渲染结果给用户。 6. **Spring Boot**:Spring Boot简化了Spring应用的初始搭建,自动配置了许多常用的功能,使得快速开发变得更容易。 7. **Spring Data**:提供了一套高级API,用于简化数据访问操作,如JPA、MongoDB等。 8. **Spring Security**:用于实现Web应用的安全管理,包括认证、授权、会话管理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值