Spring事务深入理解

JPA(Java Persistence Api)是一个基于ORM(或叫O/R mapping ,对象关系映射)的标准规范,在这个规范中JPA只定义标准规则,不提供实现。Hibernate是JPA规范的一种实现。spring框架中提供Spring Data JPA作为开发者应用Hibernate框架的接口工具;Spring Boot则提供了一款全自动的“自动依赖模块”:spring-boot-starter-data-jpa

Spring 事务管理分为编码式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件中做相关的事务规则声明,另一种是基于@Transactional 注解的方式。
声明式事务(@Transactional)基本原理如下:
1. 配置文件开启注解驱动,在相关的类和方法上通过注解@Transactional标识。
2. spring 在启动的时候会去解析生成相关的bean,这时候会查看拥有相关注解的类和方法,并且为这些类和方法生成代理,并根据@Transaction的相关参数进行相关配置注入,这样就在代理中为我们把相关的事务处理掉了(开启正常提交事务,异常回滚事务)。
事物失效场景:
1. @Transactional 应用在非 public 修饰的方法上;
2. 无事物方法调用有事物方法;
3. 数据库引擎不支持事物;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章