spring基础知识 (24):认识事务并配置一个JDBC事务管理

认识事务

  • 事务管理是企业级应用程序开发中必不可少的技术, 用来确保数据的完整性和一致性.
  • 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用
  • 事务的四个关键属性(ACID)
    1. 原子性(atomicity): 事务是一个原子操作, 由一系列动作组成. 事务的原子性确保动作要么全部完成要么完全不起作用.
    2. 一致性(consistency): 一旦所有事务动作完成, 事务就被提交. 数据和资源就处于一种满足业务规则的一致性状态中.
    3. 隔离性(isolation): 可能有许多事务会同时处理相同的数据, 因此每个事物都应该与其他事务隔离开来, 防止数据损坏.
    4. 持久性(durability): 一旦事务完成, 无论发生什么系统错误, 它的结果都不应该受到影响. 通常情况下, 事务的结果被写到持久化存储器中.

比如说一次转账流程:

  • A给B转账100元,正常的流程是A账户减少100元,B账户增加100元。
    但是如果当A账户减少100元后,程序突然出错了,导致B账户增加100元这个操作没有执行,这时候就会导致这100元不翼而飞…
  • 这时候如果使用事务,将整个流程放在一个事务中进行,当整个流程正常结束时事务再一次行提交。如果中间出现了什么错误导致流程中断,这时候事务可以回滚,取消这次流程的所有操作。包括已经完成的。
  • 也可以把事务当作一个容器或者平台,流程现在这个平武平台上进行,如果没有问题,则将所有结果同步到持久化存储器(数据库)中,如果有问题,就不同步。

下面结合代码看不使用事务会有什么问题:
账户表有两个账户:
这里写图片描述
下面完成转账的流程:

  • 持久化层:
package com.spring.tx.dao;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class TransferDao {
   
   

    @Autowired
    private JdbcTemplate jdbcTemplate;

    //通过名字获取账户余额
    public int getBalanceByName(String
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值