maven中导入的依赖

学习时时候用的,所以就用的spring提供的orm组件

<dependencies><!--springioc--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.6.RELEASE</version></dependency><!--springaop--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.2.6.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.6.RELEASE</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.5</version></dependency><!--spring自带的orm--><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>4.3.7.RELEASE</version></dependency><!--druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.21</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.16</version></dependency>
</dependencies>

2 spring xml文件配置

<?xml version="1.0" encoding="UTF-8"?>

<context:component-scan base-package="com.yk"></context:component-scan>
<context:property-placeholder location="classpath:db.properties"></context:property-placeholder><bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"><property name="dataSource" ref="dataSource"></property>
</bean>
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource"><property name="driverClassName" value="${driver}"></property><property name="url" value="${url}"></property><property name="username" value="${username}"></property><property name="password" value="${password}"></property>
</bean><!--开启事务管理器基于注解-->
<bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="transactionManager"><property name="dataSource" ref="dataSource"></property>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
在所需要开启事务的方法中加上@Transactional 注解, 或者在类名上加注解也可以(这种表示类中所有方法都会开启事务功能)。

3.事务(数据库操作的最小工作单元)

四大特性(ACID)

1.原子性 (Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。2.一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。3.隔离性(Isolation)隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。4. 持久性(Druability)持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

事务的隔离级别

不同数据库会默认设置不同的隔离级别 Mysql 默认为Repeatable read 级别 ,而Oracle数据库支持READ COMMITTED 和 SERIALIZABLE这两种事务隔离级别。所以Oracle不会发生脏读,SQL标准所定义的默认事务隔离级别是SERIALIZABLE,但是Oracle 默认使用的是READ COMMITTED。

4 Spring事务传播特性

学习笔记(Spring事务管理)相关推荐

  1. Spring学习笔记--spring+mybatis集成

    前言: 技术的发展, 真的是日新月异. 作为javaer, 都不约而同地抛弃裸写jdbc代码, 而用各种持久化框架. 从hibernate, Spring的JDBCTemplate, 到ibatis, ...

  2. 什么是事务的传播_这么漂亮的Spring事务管理详解,你不来看看?

    事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性: 事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用 ...

  3. springaop事务逻辑原理_架构师:一篇文章掌握——Spring 事务管理

    对大多数Java开发者来说,Spring事务管理是Spring应用中最常用的功能,使用也比较简单.本文主要逐步介绍Spring事务管理的相关知识点及原理,作为Spring事务管理的学习总结. 一.关键 ...

  4. Spring事务管理示例JDBC

    Spring事务管理示例JDBC Spring Transaction Management是Spring框架中使用最广泛且最重要的特性之一.事务管理在任何企业应用程序中都是一项微不足道的任务.我们已 ...

  5. spring事务管理器的作用_【面试必问】Spring中的事务管理详解

    在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务 ...

  6. JAVA Spring 事务管理事务不回滚问题

    Spring事务管理事务不回滚 dao层: @Repository public class UserDaoImpl implements UserDao { @Autowired private J ...

  7. 浅入浅出代理模式与Spring事务管理

    本文回顾了代理模式和Spring事务管理的原理. 前言 最近在开发业务代码的时候,犯了一个事务注解的错误:在同一个类的非事务方法中调用了另一个事务方法,导致事务没有生效,如下所示: public Co ...

  8. Spring事务管理的实现原理

    Spring事务管理的实现原理 文章目录 Spring事务管理的实现原理 背景 正文 第一轮学习:总体分析,目标确认 总体分析 第二轮学习:正式进入源码,寻找突破口 第二次分析 总结 第三轮学习:研究 ...

  9. spring事务管理的两种方式

    一.注解式事务 1.注解式事务在平时的开发中使用的挺多,工作的两个公司中看到很多项目使用了这种方式,下面看看具体的配置demo. 2.事务配置实例 (1).spring+mybatis 事务配置 &l ...

  10. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...

最新文章

  1. Anaconda入门使用指南(一)
  2. 20165313-张晨晖课设个人报告
  3. 因脉脉上的匿名消息,拼多多员工被开除了!
  4. wxwidgets mysql_Ubuntu下wxWidgets学生公寓管理编程,sqlite3的用法(mysql数据_MySQL
  5. ionic安装及入门示例
  6. 【ubuntu】GPU进程kill后,显存未释放(杀死僵尸进程)
  7. linux——select、poll、epoll
  8. android layout_width 属性,android:layout_weight属性详解
  9. mysql 5.6 登录 警告_解决mysql登录出现警告问题的简单方法
  10. Servlet 3.0对上传的支持
  11. 为什么chrome视频时卡得厉害(by quqi99)
  12. 浏览器访问服务器的过程
  13. 一位厦门大学CV硕士毕业生文言文致谢!畅聊三年求学路
  14. 已知一无符号的整数占用了4个字节的内存空间,现欲从低位存储地址开始,将其每个字节作为单独的一个ASCII码字符输出,试用共同体类型实现上述转换。
  15. 人工智能和图像处理方面的各种会议的评级
  16. 我本以为你们会写简历
  17. 报错(SQLite 3.8.3 or later is required (found 3.7.17).)的解决办法
  18. Spring-boot通过redisTemplate使用redis(无须手动序列化)
  19. 五大主流浏览器的内核,前端在IE浏览器中常见的兼容问题
  20. P1629 邮递员送信(最短路)

热门文章

  1. Map的Value值转换为List集合
  2. oss图片上传api_交互式核保系统:api明细:图片上传oss接口
  3. 山西省职高计算机分数线,2020年山西五年制高职和普通中专录取分数线
  4. android SharedPreferences实现用户的注册和保存账号密码
  5. 二十二、面试必备:final、finally、finalize有什么不同?
  6. AAAI 2022上那些值得关注的NLP论文
  7. 杭州内推 | 阿里达摩院机器智能技术团队招聘多模态方向研究型实习生
  8. 60万元奖金 “人脸攻防战”,怎么打?丨独家公开课实录(附baseline)
  9. 我如何一分钱没花学完AI课程,入职新浪算法工程师
  10. Oracle数据库教程