前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring事务

Spring事务

作者头像
唐怀瑟
发布2019-12-19 19:16:45
5210
发布2019-12-19 19:16:45
举报
文章被收录于专栏:Java面试笔试题Java面试笔试题
1、什么是事务?

事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败。

2、事务的特性

①原子性:指事务的操作要么全部都发生,要么都不发生。 ②一致性:指事务执行前后数据的完整性必须保持一致。 ③隔离性:指多个事务并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离(可以通过设置事务的隔离级别解决,后续会讲到)。 ④持久性:指一个事务一旦被提交,它对数据库中的数据的改变是永久性的,即使数据库发生故障也不应该对其有任何影响。

3、Spring事务管理器

Spring事务管理器高层抽象接口主要有3个接口 ①PlatformTransactionManager(平台事务管理器):主要是进行事务的提交回滚等功能。 ②TransactionDefinition(事务定义信息):主要包含事务的隔离级别、传播行为、是否超时等。 ③TransactionStatus(事务具体运行状态):包括事务是否已提交、是否是新创建的事务、是否有保存点等。

4、PlatformTransactionManager接口

根据不同的持久化框架提供了不同的PlatformTransactionManager接口实现: ①使用Spring JDBC或iBatis: org.springframework.jdbc.datasource.DataSourceTransactionManager ②使用Hibernate3.0版本: org.springframework.orm.hibernate3.0.HibernateTransactionManager

5、TransactionDefinition接口

若不考虑事务的隔离性,会引发安全问题如下: ①脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。 ②不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。 ③幻读:一个事务读取了几行记录后,另一个事务插入了一些记录,在后来的查询中第一个事务就会发现有些原来没有的记录。

5.1事务的隔离级别(四种)

事务的隔离级别就是用来解决以上三种安全问题的,隔离级别从低到高有四种: ①read_uncommited:允许你读取还未提交的改变了的数据。可能会导致脏读、不可重复读、幻读。 ②read_commited:允许在并发事务已提交后读。可防止脏读,但不可重复读、幻读仍可能发生。 ③repeatable_read:可防止脏读、不可重复读,但幻读仍可能发生。 ④serializable:完全服从ACID的隔离级别,但是速度是最慢的。 还有就是默认的default,它与你后端使用的数据库默认隔离级别一致,比如使用MySQL默认就是repeatable_read,使用Oracle默认就是read_commited。

5.2事务的传播行为(七种)

事务的传播行为主要解决的是业务层方法之间相互调用时产生的事务应该如何进行传递的问题。比如我要调用service1中的a()和service2中的b()才能完成一个业务这种情况。 ①propagation_required ②propagation_supports ③propagation_mandatory ④propagation_requires_new ⑤propagation_not_supported ⑥propagation_never ⑦propagation_nested (详细的后续再进行添加)

6、TransactionStatus接口

这里就简单列举几个常用到的方法: boolean hasSavePoint()//事务是否有保存点; boolean isCompleted()//事务是否已经完成了; boolean isNewTransaction()//是不是一个新的事务。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是事务?
  • 2、事务的特性
  • 3、Spring事务管理器
  • 4、PlatformTransactionManager接口
  • 5、TransactionDefinition接口
    • 5.1事务的隔离级别(四种)
      • 5.2事务的传播行为(七种)
      • 6、TransactionStatus接口
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档