JDBC事务、Mybatis事务机制

本文深入探讨了JDBC和Mybatis的事务管理机制,包括手动事务控制与自动事务控制,阐述了如何在JDBC中设置事务的隔离级别和回滚规则,并对比了Mybatis中基于XML和注解的事务配置方式。通过对事务处理的了解,有助于提升数据库操作的稳定性和数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Mybatis的事务管理:
    什么是事务:
        一个业务可能要对数据库进行一系类列的访问,这一系列访问可能会修改多条数据
    记录这一系列修改应该是一个整体,也就是说多个数据库原子访问应该绑定成一个整体,这就
    是事务事务是一个最少的逻辑执行单元,要么同时执行,要么同时放弃执行。

    事务的四大特性:
        原子性(Atomicity):事务是应的最小逻辑执行体,具有不可再分的特性
        一致性(Consistency):事务执行的结果必须使数据库从一种一致性状态变到另一种一致性状态,对于
            一致性的理解,我认为:当一系列操作作为一个事务时,其执行体在逻辑层面要求
            执行的内容变化合乎本身的代码逻辑设定。以转账为例,在没有转账之前"我"认为
            是一种一致性的状态,当转账时,那么"我"就认为你的账户减钱他的账户加钱后达
            到的状态是另一种一致性,那么要达到另一种一致性就需要执行体完全执行,所以
            事务的一致性需要"原子性"保证!
                一致性这个词放在事务上说似乎有些晦涩、抽象,我认为他只是人为的思想上
            认为的一致性而已。
        隔离性(Isolation):事务之间的执行互不干扰,即并发执行的事务间不能互相影响
        持续性(Durability):也称持久性(Persistence),事务一旦提交,事务对数据所进行的修改将持久在
            数据库。

    Mybatis事务管理机制分为两种:
        使用JDBC的事务管理机制:
            使用Connection对象完成对事务的提交、回滚、关闭
        使用MANAGED的事务管理机制:
            这种机制Mybatis什么也不做,而是让容器来实现对事务的管理

    Transaction接口,Mybatis事务设计的重点:
            1.对数据库的事务来说,应该具有创建、提交、回滚、关闭这几个动作。
            2.Mybatis将事务抽象为Transaction这个接口,它的两个实现类:JdbcTransaction和
        ManagedTransaction。对于这两个实现类Mybatis提供了TransactionFactory接口,
        TransactionFactory有两个实现类:JdbcTransactionFactory和
        ManagedTransactionFactory,用来获取事务实例。

            Transaction接口
                JdbcTransaction实现类
                ManagedTransaction实现类
            TransactionFactory接口
                JdbcTransactionFactory实现类
                ManagedTransactionFactory实现类
        Transaction的实现可通过上面的对应工厂来获取!
            3.对比JdbcTransaction和ManagedTransaction都做了什么?
                JdbcTransaction
                    底层利用原始的事务管理机制,依赖于从dataSource获取的连接connection来实现
                    的管理,JdbcTransaction只不过是对java.sql.Connection事务处理简单封装。
                ManagedTransaction
                    ManagedTransaction的事务是交给容器来做的,他自己啥也没有,即没有实质的
                    事务控制力,它的commit()、rollback()方法里面写的是do noting!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值