当前位置: 首页 > news >正文

Spring框架-数据访问层和事务管理

一.Spring数据访问层管理

1.导入Spring jdbc,mysql,mybatis,Spring管理mybatis数据访问层jar包

        </dependency>           <groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.2.RELEASE</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency><!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency>
<!--        Spring管理mybatis的jar包        --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.1</version></dependency>

2.导入阿里数据源

<!-- 阿里数据源 -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.10</version>
</dependency>

3.Spring管理数据库连接对象

<bean id="dataSource"class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value=""></property><property name="url" value=""></property><property name="username" value=""></property><property name="password" value=""></property><property name="initialSize" value="10"></property><!初始化连接数量><property name="maxActive" value="20"></property><!最大连接数量>
</bean>

以前使用jdbc,mybatis都是由我们自己创建数据库连接对象,在Spring中如果需要连接数据库,那么只需要将Spring管理的连接对象交给mybatis

4.Spring管理sqlSessionFactory对象

<!--    Spring管理sqlSessionFactory对象--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="druidDataSource"></property>   <!-- 注入数据库 --><property name="configLocation" value="classpath:mybatis.xml"></property><!--    spring自动注册Mapper映射    --><property name="mapperLocations" value="classpath:mappers/*Mapper.xml"></property></bean>

5.生成mybatis接口代理对象,扫描指定的包,并将数据库连接对象交给mybatis

<!--  生成mybatis接口代理对象,直接扫描指定的包  --><bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="springpro.dao"></property><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property></bean>

二.事务管理

1.数据库事务管理

        数据库事务管理就是对一次数据库操作过程中执行的多条执行语句进行管理,保证一次对数据库操作的多条sql要么都执行,要么都不执行,确保数据一致性

2.Spring事务管理

        Spring事务管理就是Spring框架针对程序中提交事务这部分业务代码与业务代码进行分离,在程序执行没有问题时,提交事务,程序出现问题时,回滚事务

Spring中的事物管理分为两种形式:

1>编程式事务

        在项目中很少使用,这种方式需要我们在代码中提交事务或回滚事务时自己写代码实现

2>声明式事务

        声明式事务建立在AOP基础上,本质是对方法前后进行拦截,所以声明式事务是方法级别,在方法或类上添加注解标签即可,这样Spring会帮我们自动进行事务管理,方法成功则提交事务,出现异常则回滚事务

配置:

<!-- 配置 spring 事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="druidDataSource"></property></bean><!-- 开启注解事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

注解标签(@Transactional):可以添加在类和方法上,添加在方法上只对这个方法生效,添加在类上对这个类中的所有方法都生效

声明式事务失效场景:

        1.注解应用在非public修饰的方法上

         2.异常被catch捕获了,事务失效

         3.默认情况下出现编译期异常,可以解决@Transactional(rollbackFor = Exception.class) 不修改的情况下只有运行期异常会事务回滚

         4.数据库引擎不支持事务(数据库有很多引擎,只有一个引擎支持事务InnoDB)

http://www.dtcms.com/a/339621.html

相关文章:

  • 不止是耳机,运动与商务的结合!雷登A7开放式蓝牙耳机
  • Linux下的软件编程——IPC机制(信号和共享内存)
  • QT6(常用界面组件的使用和布局管理)
  • 芯片没有型号能解密程序么?
  • 多线程—飞机大战排行榜功能(2.0版本)
  • 量化交易 - 概念板块对应股票 python代码
  • IEEE Transactions on Communications (TCOM) 投稿状态记录
  • 右值引用与移动语义【C++进阶每日一学】
  • Chrome插件开发【windows】
  • Infusing fine-grained visual knowledge to Vision-Language Models
  • Kotlin 协程之Channel
  • Python脚本每天爬取微博热搜-升级版
  • 电商数据分析可视化预测系统
  • GPT-5论文写作全流程提示词库
  • 点大餐饮独立版系统源码v1.0.3+uniapp前端+搭建教程
  • 图像采集卡与工业相机:机器视觉“双剑合璧”的效能解析
  • spring事务(@Transactional)失效的情景及处理
  • RabbitMQ:SpringAMQP 多消费者绑定同一队列
  • shenyu网关与与nacos业务网关的定位
  • 源网荷储 + 微电网:1+1 如何大于 2?能源协同解决方案
  • c++日志宏 INFO(...)
  • Webpack 5 配置完全指南:从入门到精通
  • Docker镜像--镜像分层、UnionFS、镜像发布、私有库Registry
  • Java -- 用户线程和守护线程--线程同步机制
  • 大模型问题:幻觉分类+原因+各个训练阶段产生幻觉+幻觉的检测和评估基准
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|18th Aug. , 2025
  • 【GNSS定位原理及算法杂记6】​​​​​​PPP(精密单点定位)原理,RTK/PPK/PPP区别讨论
  • usb通信中工作模式:主机模式和设备模式
  • 2025年渗透测试面试题总结-21(题目+回答)
  • 水闸安全监测的主要核心内容