当前位置: 首页 > 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.lryc.cn/news/625396.html

相关文章:

  • OpenCV计算机视觉实战(20)——光流法运动分析
  • PicoShare 文件共享教程:cpolar 内网穿透服务实现跨设备极速传输
  • 【数据结构】使用队列解决二叉树问题
  • 通信方式:命名管道
  • 如何禁用 Windows 服务器的自动更新以避免意外重启
  • 协程库项目面试常见问题 | 简历写法
  • 使用OpenCV计算灰度图像的质心
  • 前端面试核心技术30问
  • Springboot使用Selenium+ChormeDriver在服务器(Linux)端将网页保存为图片或PDF
  • 【完整源码+数据集+部署教程】太阳能板表面损伤检测图像分割系统源码和数据集:改进yolo11-DynamicHGNetV2
  • Linux------《操作系统全景速览:Windows·macOS·Linux·Unix 对比及 Linux 发行版实战指南》
  • C#项目集成海康SDK指南:从搭建环境到实现视频预览、录制、截屏
  • 什么是AKSK?
  • F003疫情传染病数据可视化vue+flask+mysql
  • 100202Title和Input组件_编辑器-react-仿低代码平台项目
  • 全平台轻量浏览器推荐|支持Win/macOS/Linux,极速加载+隐私保护+扩展插件,告别广告与数据追踪!
  • 私有化部署全攻略:开源大模型本地化改造的性能与安全深度评测
  • 在 IntelliJ IDEA 中修改 Git Commit 描述
  • Linux的ALSA音频框架学习笔记
  • Voice Agents:下一代语音交互智能体的架构革命与产业落地
  • 项目一系列-第5章 前后端快速开发
  • 【qml-5】qml与c++交互(类型单例)
  • 如何计算 PCM 音频与 YUV/RGB 原始视频文件大小?
  • 【Git Submodules 与微前端架构技术指南】
  • 指针的应用学习日记
  • Hive 存储管理测试用例设计指南
  • CSDN 创始人蒋涛:以开源驱动技术创新,拥抱黄金十年
  • 【SpringBoot】15 核心功能 - Web开发原理 - 请求处理 - 常用请求参数注解
  • 如何安全删除GitHub中的敏感文件?git-filter-repo操作全解析
  • 玳瑁的嵌入式日记D20-08019(数据结构)