范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Spring事务

  使用Spring事务
  Spring事务介绍
  Spring事务的特点:
  1. 多种事务API,Spring事务都可兼容;
  2. 程序接入简单;
  3. 与已有的Spring框架集成。
  支持的事务API如下:
  Spring事务使用代码如下:@Transactional  @Override  public void testTransactional(Integer id) {  		demoDao.remove(id);  }
  此为Service实现类中的一个实现方法
  Spring事务引入
  那么Spring中使用事务,我们要做的是:
  对要使用事务的类或者方法,添加注解`@Transactional`。支持事务元数据设置,比如传播特性,回滚设置等,通过AOP将设置生效。
  增加配置:`@EnableTransactionManagement`,来开启Spring中注解驱动的事务管理能力。Spring Boot中默认开启,不需要加该注解。
  一般是在Service层添加事务,然后其他层或者其他Service类来调用该事务类。
  Transaction API:JDBC
  一直使用的JDBC Driver来连接数据库。
  开启Spring事务之前,先看事务作用于什么?是对于数据库层来说。
  那么程序与数据库层发起一次事务如何来实现呢?首先来看Java程序与数据库的交互,是通过JDBC(Java database connectivity)来展开。JDBC是API形式,定义了客户端如何访问数据库。
  JDBC API的实现则有JDBC Driver Manager。在pom文件中,有引入过此Jar包。使用过程中,有一个连接池,来管理可用的JDBC connection。那么程序就可通过JDBC Driver来发起事务,其中事务与一个JDBC connection相关联。
  事务的过程实现代码类似于:import java.sql.Connection;   Connection connection = dataSource.getConnection(); // (1)   try (connection) {     connection.setAutoCommit(false); // (2)     // execute some SQL statements...     connection.commit(); // (3)   } catch (SQLException e) {     connection.rollback(); // (4) }
  可以看到事务的过程为,获取数据库连接,取消自动提交,执行SQL逻辑,然后控制正常提交,异常回滚。
  Spring事务默认设置
  默认的事务能力是:传播机制是`REQUIRED`,即当前无事务时新建一个事务,当前存在事务,则加入该事务中。隔离级别是`DEFAULT`,即使用数据库默认的隔离级别,那么数据库层默认的隔离级别是`REPEATABLE_READ` (可重复读)。transaction is read-write。服务于传播机制,相对应的read-only来表明只做只读操作。默认超时时间,跟随底层事务服务提供方,如果不支持超时逻辑则没有。我们使用的默认超时时间是50s。回滚机制适用于`RuntimeException`。checked Exception不会触发。Spring事务实现
  @Transactional实现逻辑
  Spring事务是对多种Transaction API的封装,那么基于JDBC实现的封装后,通过增加`@Transactional` 注解来实现,简化了用户的使用流程。
  分析事务过程中,每次变化的是执行SQL的逻辑部分。分析如下:
  Spring 提供Proxy层来实现,开启事务和关闭事务,中间过程再调用业务逻辑,即,Real UserService的userDao.save()部分。为什么说是Real?
  在Spring中我们要对某个类或者方法添加事务时,可以直接在其上添加注解 @Transactional。
  Spring内部的实现,则是依赖IoC和AOP特性。
  对含有@Transactional注解的类或者方法,提供一层Proxy实现。通过AOP实现了关联。
  对于含有@Transactional的bean,IoC容器会对该bean初始化一个代理类,也就是上面的UserService Proxy。该proxy内部对实际的service调用,实现其业务逻辑。使用时因为IoC特性,调用相应的proxy类而不是实际 service,对内部的代理逻辑我们无感知。
  那么从程序侧,实现了对事务的开启和关闭的封装,而事务与数据库连接相关联,此处Spring对数据库连接则封装在TransactionManager中,常用的功能类是PlatformTransactionManager。此处的调用逻辑如下图:
  `ReactiveTransactionManager`是响应式功能类
  Spring事务手动控制
  在一些场景下,不可用注解`@Transactional`来控制事务,需要引入手动控制逻辑时,Spring提供了封装类`TransactionTemplate`。也是对`PlatformTransactionManager`的封装,简化使用流程,类似于RedisTemplate等等。@Service public class UserService {          @Autowired         private TransactionTemplate template;            public Long registerUser(User user) {                 Long id = template.execute(status ->  {                         // execute some SQL that e.g.                         // inserts the user into the db and returns the autogenerated id                         return id;                     });         }  }
  不必自己打开或者关闭数据库连接,并且Spring会将`SQLExceptions`转换为`RuntimeException`。Spring事务封装类
  Spring事务实现类
  类结构如图:
  AOP执行类:TransactionAspectSupport,内部是调用TransactionManager来实现事务逻辑。
  Spring对事务的封装逻辑,通过类`PlatformTransactionManager`,将指定`DataSource`的`JDBC Connection`绑定到当前线程。
  当使用`DataSource.getConnection()`时,并不是Spring封装支持的形式,可以定义`TransactionAwareDataSourceProxy`代理目标`DataSource`,在DAO层中使用该proxy类,可实现Spring的事务管理。
  `LazyConnectionDataSourceProxy`该代理类也实现了Spring的事务管理,它的优势是当要执行语句时,才从目标数据源获取连接。
  Spring事务的不同封装层级
  通过Spring封装对数据库的访问,我们可以正确创建、重用和清理持久性API资源(比如JDBC,Hibernate或JPA等),完成`DataSourceTransactionManager`到JDBC DataSource或者`HibernateTransactionManager`到Hibernate SessionFactory的事务链接到相关资源,实现Spring管理的事务。
  Spring提供了不同封装层级的数据访问操作类,使用其会支持Spring事务。如下图:
  Spring事务不生效原因基于上面的逻辑,梳理出常见的事务不生效的原因有:默认设置下,开启事务的方法必须是public。类内部自调用,AOP代理不生效。初始化时不生效,比如在@PostConstruct中。依赖IoC逻辑将proxy完全初始化以提供能力。抛出的异常是否是RuntimeException。SpringBoot项目中使用多数据源切换时,TransactionManager类中加载的是否是当前数据源。Spring项目中,使用低层级的数据源访问方式时,检查数据源封装是否是Spring事务支持的代理类。

小米创立以来首谈知识产权是出海保障而非绝对保证作为小米集团总裁,王翔刚加入小米时,外界热议的一种声音是小米怎么可能出海?一家没有专利的公司。王翔认为,这是一种比较外行的说法,一家公司不可能由于IP问题而被阻在海外上市,这是一个爱放屁的人注意了!肝郁屁多,胃积屁闷,肠积屁堵,气虚屁无力爱放屁的人注意了,肝郁屁多,胃积屁闷,肠积屁堵,气虚屁无力,今天我就来告诉你原因,并教你参考相对应的中成药来帮你调!首先第一个,肝郁屁多,中医上讲,肝主疏泄,体内的一切气机都需要肝72岁的老年足球队员阳过,但什么感觉都没有72岁的钟波波是静安区三层楼老年足球队的队员。每周有两个半天,他都和一群老伙伴驰骋在绿茵场上,开展足球训练,这也是他日常锻炼的重要内容。我们这群老伙伴,年龄最小的五十岁,最大的比我阳事不举,肾虚无力,一剂振阳汤,温阳益肾,振奋起事古代医家古籍对于男子阳事不举病因的论述,较为全面的当属黄帝内经。1。有责之于气虚过甚气大衰而不起不用2。有归于寒热所伤伤于寒则阴缩入,伤于热则纵挺不收3。归为悲恐多思等负面情绪所致居家期间口腔保健操不能少近期不少人居家时长变多,由于不懂得正确的口腔保健打开方式,口臭溃疡牙齿敏感牙龈炎等问题也随之而来。虽说一日三餐牙齿似乎都在运动,可就像人四肢每天都在活动不能代替健身锻炼那样,口腔也退烧药脱销!布洛芬龙头新华制药8天7板,员工三班倒,机器24小时不停工本文来源时代财经作者张羽岐图片来源图虫创意布洛芬缓释胶囊(商品名密之康正士)没有货了。药品销售人员黄文(化名)称,现在布洛芬缓释胶囊已经炒到40多元一盒。时代财经在1药网检索发现,硬刚飞利浦!国产剃须刀迎来新翘楚,充电1小时续航60天对于女生来说,最不可缺少的就是化妆品和护肤品,而男生少不了是一把实用的电动剃须刀了。最初,我们使用的都是手动剃须刀,不仅过程费时费力,还容易划伤我们,到了现在电动剃须刀是越来越流行游资心法(炒股养家交割单)2010年炒股养家实盘赛实盘赛时间2010年7月1日2010年9月30日比赛初始资金209万,比赛技术资金300万,三个月获利43。6比赛期间大盘背景上证指数上证指数在比赛期间反弹重整计划解读康美药业重整计划服务企业,拯救危机,摆脱困境,实现更生。重整计划实施效果法人主体资格企业性质及证券市场主体资格不变资本公积转增新股,引进重整投资人以股抵债有财产担保债权职工债权税款债权以现金方式一机构预计至2026年5G占整体FWA连接数不及40,4G仍是主流IT之家12月16日消息,据DIGITIMESResearch的最新研究显示,过去三年全球移动宽带服务用户数量的增长速度低于固定网络用户,这一趋势促使多家5G电信运营商将固定无线接丰田全新电动越野SUV曝光,或命名为雅力士酷路泽,很硬朗早在2021年底丰田新能源战略发布会上,丰田就发布了一款CompactCruiserEV概念车型,近日我们从海外媒体处获悉,新车的量产版车型将于2023年上半年发布,同时根据轮胎上
坦坪镇中心学校开展筑梦时代新征程主题手抄报比赛红网嘉禾分站(通讯员刘敏波李嘉蓉)日前,坦坪镇中心学校筑梦时代新征程主题手抄报活动评比结果出炉,学校评委团为获奖选手颁奖。据悉,此次比赛旨在引领青少年听党话跟党走,激发学生的爱国主事关隔离政策封控时长等,最新回应来了当前,各地正在抓实抓细做好疫情防控。国务院联防联控机制新闻发布会指出,要根据检测流调结果做好风险研判,精准判定风险区域。封控管理要快封快解应解尽解,减少因疫情给群众带来的不便。围绕日本队连续战胜世界强队令人深思今晨世界杯日本队居然战胜了强大的西班牙队,令人刮目相看!确实这几十年来日本足球的进步是看得见的,他们从亚洲默默无闻到多次获得亚洲冠军多次进军世界杯就是明证!反观国足,已经被九十年代四川一老夫妻收养ampampquot怪胎ampampquot,7岁满脸皱纹如老人,照顾1年后奇迹发生2015年,辽宁卫视完美告白节目现场来了一位十分特殊的小女孩,小女孩看上去六七岁大,脸庞稚嫩。大家好,我叫曾玉珊,今年二十岁。此话一出,在场的所有人不由自主地发出了惊呼。曾玉珊出生江麓集团与湘潭市总工会联合开展国防教育暨主题党日活动近日,湘潭市总工会组织党员干部职工代表到中国兵器江麓集团,联合开展国防教育暨主题党日活动。在罗军国家级技能大师工作室,职工们围在一台精密仪器前,聚精会神地聆听全国劳动模范全国技术能海南全面构建防范治理电信网络诈骗工作新格局电信网络诈骗犯罪持续高发,已成为上升最快群众反映最为强烈的突出犯罪。海南省委省政府把电信网络诈骗犯罪综合治理工作作为推进平安建设和社会治理现代化的重要内容。2022年,按照国务院联学习诗词是全家的事情在物竞天择中脱颖而出的人类,天生保留了竞技的本性。足球如此,世界杯让多少人如痴如醉诗词也是如此。古往今来,联诗飞花令曲水流觞各种诗词比赛,玩法层出不穷,人们乐此不疲。竞技让诗词更显长沙最美农村公路全景VR上线邀您沉浸式云游11月30日,长沙市交通运输局最美农村公路全景VR正式上线。红网时刻新闻12月1日讯(通讯员高波)11月30日,长沙市交通运输局最美农村公路全景VR正式上线。借助3D全景和VR(虚泰国知名私立学校幼儿园小孩离奇身亡事发当天监控损坏据泰媒报道,11月29日,泰国某知名律师通过个人脸书透露,近日有家长前来向他求助,称他们在某私立贵族学校上幼儿园中班的孩子在校期间摔倒,回家后不幸死亡。他们向校方索要当天的监控录像担心宝宝脐带绕颈?做好这几点很重要准妈妈正在进行孕产咨询。红网时刻新闻11月30日讯(通讯员黄颖)很多宝妈做完超声检查后,得知宝宝脐带绕颈都难免会担忧和害怕,怕宝宝缺氧啦,怕无法顺产啦,其实脐带绕颈是孕期很常见的情在家带娃是小事儿别天真!一群大学生不一定能制服一个小学生你不就在家带个孩子嘛!怎么辅导作业这点小事儿都做不好?小学生的题,难道你大学生都不会了吗?也许爸爸们觉得带娃,辅导功课都是小事儿,婆婆妈妈不是大男人该干的活儿,这些琐事儿就应该妈妈