spring的事物

这篇具有很好参考价值的文章主要介绍了spring的事物。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这是我第三次接触事物了,mysql一次,以前的也看过一次。

事物的四大特点:

原子性:多条sql保证同时成功,同时失败。

一致性:在事物的开启和结束,数据库的完整性不被破坏。

隔离性:多线程时,要保证数据的安全,也就是并发安全。

持久性:事物处理后,对数据的修改是永久的,一旦执行事物成功,就刷新到数据库。

其实主要还是第一句:同时成功,同时失败! 

所以,我们开启事物,就是为了利用上面的四个特点,解决问题。

那么,spring是如何实现的,归根结底,我们很多时候,只需要开启事物就行了,底层已经被spring完成了:

使用这种方式的前提是,已经集成了spring-mybatis

第一种方法:

声明式事物(通过xml声明事物,然后利用spring的AOP织入到方法中)

使用DataSourceTransactionManager类进行事物托管。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd
">
    <!--   连接池-->
    <bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/user?UseSSL=false"></property>
        <property name="username" value="root"></property>
        <property name="password" value="qx@123456"></property>
    </bean>
    <!--sqlsessin工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="datasource"></property>
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <property name="mapperLocations" value="classpath:*.xml"></property>
    </bean>
    <!--spring的模板-->
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>


    <bean id="userMapper2" class="com.quxiao.mapper.UserMapper2">
        <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
    </bean>
    <!--    声明事务-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="datasource"></property>
    </bean>
    <!--       配置事物管理,比如全部方法加上事物-->
    <tx:advice id="interceptor" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>
    <!--    aop织入-->
    <aop:config>
        <aop:pointcut id="point" expression="execution(* com.quxiao.mapper.*.*(..))"/>
        <aop:advisor advice-ref="interceptor" pointcut-ref="point"></aop:advisor>
    </aop:config>

    <!--    开启注解Apo-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    <!--    开启注解事物代理-->
    <tx:annotation-driven></tx:annotation-driven>
    <!--    刚刚的错误是因为没有开启注解事物代理-->
    <!--    aop模式下的注解失败没搞懂,显示获取不到bean-->
</beans>

不知道为啥,重新写了一遍声明式事物,就可以使用了,原来的报错找不到Bean。

至于集成mybatis的代码,在前面写过博客(8条消息) 踩大坑mevan静态资源第二次害死我,以及自己的马虎,又又又害死自己,spring-mybatis_小肖在路上的博客-CSDN博客

打代码还是太马虎了。。。

注解式事物: 通过使用@Transactional注解,底层当是使用AOP环绕,然后进行开启事物。

spring的事物

要开启同时还要在配置文件xml中开启注解事物的支持:

spring的事物文章来源地址https://www.toymoban.com/news/detail-466095.html

到了这里,关于spring的事物的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring事物失效的八大场景

    1.方法内的自调用:spring事物是基于aop的,只要使用代理对象调用某个方法时,spring事物才能生效,而在一个方法内使用this.xxx()时。this并不是代理对象,所以会失效(实际上是@transaction注解失效) 解决办法:1.自己注入自己                         2.把调用方法拆

    2024年02月08日
    浏览(36)
  • spring事物初始化过程分析

    1.注入4个bd 2.执行 org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessBeforeInstantiation 逻辑分析:遍历所有的bd: 获取beanname-判断beanname是否有长度并且没有被处理过-是否遍历放入advisedBeans- 是否是基础类-是否该跳过  4大基础类 3.执行org.springframework.aop.framework.autoprox

    2024年02月02日
    浏览(35)
  • [MySQL] MySQL中的事物

        本片文章对MySQL中的事物进行了详解。其中包含了事物的特性、为什么要有事物、查看事物版本支持、事物常见操作、事物的隔离界别等等内容进行详细举例解释。同时还深入讲解了事物的隔离性,模拟实现MVCC多版本并发控制,也讲解了RR和RC的本质区别。希望本篇文章会

    2024年02月03日
    浏览(37)
  • 恢复MySQL!是我的条件反射,PXB开源的力量...

    📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜😜😜 中国DBA联盟(ACDU)成员,目前服务于工业互联网 擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优

    2024年04月29日
    浏览(26)
  • 红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01

    书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。 Ruby是一门在面向对象层面无所不用其极的解释型编程语言。 我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的

    2024年01月20日
    浏览(54)
  • 【Spring事物三千问】TransactionSynchronizationManager的原理分析

    TransactionSynchronizationManager 是管理每个线程的DB连接资源和事务同步的核心委托类。 如果事务同步未处于活动状态,则表示当前没有事务,或者事务管理器不支持事务同步。 TransactionSynchronizationManager 中定义了很多 ThreadLocal 变量,来保存事务相关的信息 不同的平台的DB连接资源

    2023年04月08日
    浏览(24)
  • MySQL中的事物

    目录 一、背景 二、事物的概念 概念: 回滚: 三、事物的特性 1、原子性 2、一致性 3、持久性 4、隔离性 四、并发执行的三个典型bug 1、脏读 2、不可重复读 3、幻读 五、MySQL的隔离级别 1、read uncommitted 读未提交 2、read committed 读已提交 3、repeatable read 可重复读 4、serializabl

    2024年02月05日
    浏览(42)
  • MySQL事物

    事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果,保证事务执行的原子操作 事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上 事务执行过程中,有的SQL出现错误,那么事务必须要回滚(rollback)到最初

    2023年04月08日
    浏览(35)
  • MySQL----事物与存储引擎

    事务是一种机制、一个操作序列,包含了一组数据库操作命令(增删改),并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元, 在数据库系统上执行并发操作时,事务是最

    2024年02月10日
    浏览(47)
  • Python第三次作业

    周六 1. 求一个十进制的数值的二进制的0、1的个数 2. 实现一个用户管理系统(要求使用容器保存数据)         [{name: xxx, pass: xxx, ……},{},{}]  3. 求1~100之间不能被3整除的数之和  4. 给定一个正整数N,找出1到N(含)之间所有质数的总和 5. 计算PI(公式如下:PI=4(1-1/3+

    2024年04月10日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包