前言:

因为项目中使用jpa的SessionFactory用@Autowired的方式来操作Hibernate的Session,死活开不了事物,最后终于在一篇博客的帮助下,了解到使用SessionFactory是无法在Service实现类中@Transactional开启事物的。

必须手动开启事物~!

当手动开启事物,过于繁琐,所以小生不才。手写了一个aop的实现类来实现事物的开关~!

实现方式:

话不多说,直接上代码!

package com.meeno.wzq.transaction;
import com.meeno.trainsys.user.dao.UserDao;
import org.aspectj.lang.annotation.*;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import java.sql.SQLException;
/*** @program: server-java-private* @description: 因为使用 SessionFactory 操作Session 必须 显式调用 事物* @author: Wzq* @create: 2019-06-19 15:41*/
@Aspect
@Configuration
public class TransactionAdviceConfig {/*** try{*     try{*         //@Before*         method.invoke(..);*     }finally{*         //@After*     }*     //@AfterReturning* }catch(){*     //@AfterThrowing* }*/@AutowiredSessionFactory sessionFactory;
//    Session session;//PointCut表达式// Service 不能调用业务层 负责事务嵌套了//    @Pointcut("execution(public * com..service.*Service.*(..))")//PointCut签名@Pointcut("execution(public * com..action.*Controller.*(..))")public void log(){}@Before("log()")public void doBefore(){System.out.println("---------------事物前置------------");boolean b1 = sessionFactory.getCurrentSession().getTransaction().isActive();boolean b2 = sessionFactory.getCurrentSession().isOpen();boolean b3 = sessionFactory.getCurrentSession().isConnected();sessionFactory.getCurrentSession().getTransaction().begin();}@AfterReturning("log()")public void afterReturning(){System.out.println("---------------事物后置通知------------");sessionFactory.getCurrentSession().getTransaction().commit();}@After("log()")public void doAfter(){System.out.println("---------------最终通知------------");
//        this.pDao.getCurrentSession().getTransaction().commit();
//        sessionFactory.getCurrentSession().close();}@AfterThrowing("log()")public void doAfterThrowing(){boolean b1 = sessionFactory.getCurrentSession().getTransaction().isActive();
//        boolean b2 = sessionFactory.getCurrentSession().isOpen();
//        boolean b3 = sessionFactory.getCurrentSession().isConnected();if(b1){sessionFactory.getCurrentSession().getTransaction().rollback();}System.out.println("---------------事物异常------------");}}

这是我的公众号 有最新的it咨询,和个人工作的记录:

这是我的个人微信遇到问题欢迎,提问:

最后加上高质量的淘宝店:如有质量问题随时滴滴我,童叟无欺!

【童装园服定制店铺】https://m.tb.cn/h.ef2J8CD?sm=6e0f74 点击链接,再选择浏览器咑閞;或復·制这段描述¥zfwjY4JVngW¥后到淘♂寳♀

jpa SessionFactory事物失效相关推荐

  1. @Transactional-同一个类中方法自调,调用方法事物失效

    问题分析 一个类中的方法调用另一个事物传播性为创建事物的方法,调用的方法事物失效? SpringAOP 代理的Service对象调用了其方法,这个方法再去调用这个Service中的其他方法是没有使用A ...

  2. springboot+hibernate+jpa+SessionFactory项目搭建

    本人自己搭的项目地址 不想废话,直接看代码去吧!

  3. jpa 连接多个mysql 数据库_SpringBoot 连接多个数据库

    这里我们假设大家已经熟悉 SpringBoot + JPA 连接单个数据库的开发.如果不熟悉,可以参考:Spring Boot 使用数据库 Pom 依赖和但数据库没有区别,照常引入. JAP 的 En ...

  4. springAOP事物管理不生效原因总结————转载收藏于: superdog007

    环境:mybatis3.3,spring3.2,druid 我是将事物交给springAOP进行管理,采用的xml方式配置,同时开启支持注解式事物驱动. <!-- 下面是配置声明式事务管理的,个 ...

  5. 使用springmvc后事物不起作用的原因

    问题表现:用springmvc后事物不起作用 解决方法: 1.查所有关于事物的配置都没有问题: 影音先锋电影 http://www.iskdy .com/ 2.查找日志,发现配置@postConstr ...

  6. 【Hibernate】

    目录 Hibernate与ORM的关系是什么? Hibernate执行流程 搭建一个Hibernate环境,步骤如下: dao层保存一个对象示例 Hibernate主配置文件 Hibernate映射配 ...

  7. spring boot多数据源动态切换, 多数据源事务管理

    1 . 项目目标 实现 不同数据源的切换 (使用AbstractRoutingDataSource) 不同数据源之间,事物管理,多个数据源之间同时commit或者同时rollback 兼容不同的连接池 ...

  8. Spring MVC配置文件的三个常用配置详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和applicationContext.xm ...

  9. Docker创建自己的github(Gitea)

    查看全文 http://www.taodudu.cc/news/show-168989.html 相关文章: maven打包导入本地jar包 Spring boot 文件上传大小限制 liunx系统m ...

最新文章

  1. VR原理讲解及开发入门
  2. 2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
  3. NIO 之 ByteBuffer实现原理
  4. 【简单解法】1093 字符串A+B (20分)_16行代码AC
  5. 光纤模块与光纤收发器的区别
  6. 设计撑百万并发的数据库架构
  7. springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.
  8. linux怎么打开pak文件怎么打开,在elementary OS系统中开启Flatpak应用程序支持
  9. android edittext不可复制_Android中使EditText只读的方法(可恢复编辑状态)
  10. Hibernate一张图
  11. linux内核配置成qspi挂载,Zynq-Linux移植学习笔记之十-qspi驱动配置
  12. Pandas系列(三)新增数据列
  13. What's New in Qt 5.5 5.4,以及5.5 所有module
  14. uniapp 打包H5自定义模板
  15. 交互设计—超越人机交互(第5版)
  16. 汉诺塔递归算法C++实现
  17. 前端页面闪动(vue+ele 表格分页)
  18. 一个人的生命周期,就是人的一生
  19. linux服务器网卡驱动安装,在linux下安装网卡驱动的方法
  20. 专访李明远,理清直达号九大疑问

热门文章

  1. GEO数据挖掘(3)-芯片基础知识
  2. iMeta:西农韦革宏团队焦硕等-土壤真菌驱动细菌群落的构建(全文翻译/PPT/视频解读)...
  3. 澳门大学燕茹教授课题组招聘/招生启事
  4. 免费申领Bio-protocol单细胞研究实验方法精选集
  5. 2019微生物组—宏基因组分析专题培训第三期
  6. 央视与遗传发育所合拍《锄禾者新说》科教片
  7. Python使用matplotlib可视化气泡图、并使用encircle函数自定义多边形圈定可视化图像中的指定区域(Bubble plot with Encircling)
  8. R语言伪相关性分析(Spurious Correlation)、相关关系不是因果关系:以哺乳动物数据集msleep为例
  9. 机器学习数据预处理之缺失值:预测填充(回归模型填充、分类模型填充)
  10. 基于Kmeans聚类算法的图像分割(色彩分割)实战