jpa SessionFactory事物失效
前言:
因为项目中使用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事物失效相关推荐
- @Transactional-同一个类中方法自调,调用方法事物失效
问题分析 一个类中的方法调用另一个事物传播性为创建事物的方法,调用的方法事物失效? SpringAOP 代理的Service对象调用了其方法,这个方法再去调用这个Service中的其他方法是没有使用A ...
- springboot+hibernate+jpa+SessionFactory项目搭建
本人自己搭的项目地址 不想废话,直接看代码去吧!
- jpa 连接多个mysql 数据库_SpringBoot 连接多个数据库
这里我们假设大家已经熟悉 SpringBoot + JPA 连接单个数据库的开发.如果不熟悉,可以参考:Spring Boot 使用数据库 Pom 依赖和但数据库没有区别,照常引入. JAP 的 En ...
- springAOP事物管理不生效原因总结————转载收藏于: superdog007
环境:mybatis3.3,spring3.2,druid 我是将事物交给springAOP进行管理,采用的xml方式配置,同时开启支持注解式事物驱动. <!-- 下面是配置声明式事务管理的,个 ...
- 使用springmvc后事物不起作用的原因
问题表现:用springmvc后事物不起作用 解决方法: 1.查所有关于事物的配置都没有问题: 影音先锋电影 http://www.iskdy .com/ 2.查找日志,发现配置@postConstr ...
- 【Hibernate】
目录 Hibernate与ORM的关系是什么? Hibernate执行流程 搭建一个Hibernate环境,步骤如下: dao层保存一个对象示例 Hibernate主配置文件 Hibernate映射配 ...
- spring boot多数据源动态切换, 多数据源事务管理
1 . 项目目标 实现 不同数据源的切换 (使用AbstractRoutingDataSource) 不同数据源之间,事物管理,多个数据源之间同时commit或者同时rollback 兼容不同的连接池 ...
- Spring MVC配置文件的三个常用配置详解
2019独角兽企业重金招聘Python工程师标准>>> Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和applicationContext.xm ...
- Docker创建自己的github(Gitea)
查看全文 http://www.taodudu.cc/news/show-168989.html 相关文章: maven打包导入本地jar包 Spring boot 文件上传大小限制 liunx系统m ...
最新文章
- VR原理讲解及开发入门
- 2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
- NIO 之 ByteBuffer实现原理
- 【简单解法】1093 字符串A+B (20分)_16行代码AC
- 光纤模块与光纤收发器的区别
- 设计撑百万并发的数据库架构
- springboot 工程启动报错之Consider defining a bean of type ‘XXX’ in your configuration.
- linux怎么打开pak文件怎么打开,在elementary OS系统中开启Flatpak应用程序支持
- android edittext不可复制_Android中使EditText只读的方法(可恢复编辑状态)
- Hibernate一张图
- linux内核配置成qspi挂载,Zynq-Linux移植学习笔记之十-qspi驱动配置
- Pandas系列(三)新增数据列
- What's New in Qt 5.5 5.4,以及5.5 所有module
- uniapp 打包H5自定义模板
- 交互设计—超越人机交互(第5版)
- 汉诺塔递归算法C++实现
- 前端页面闪动(vue+ele 表格分页)
- 一个人的生命周期,就是人的一生
- linux服务器网卡驱动安装,在linux下安装网卡驱动的方法
- 专访李明远,理清直达号九大疑问
热门文章
- GEO数据挖掘(3)-芯片基础知识
- iMeta:西农韦革宏团队焦硕等-土壤真菌驱动细菌群落的构建(全文翻译/PPT/视频解读)...
- 澳门大学燕茹教授课题组招聘/招生启事
- 免费申领Bio-protocol单细胞研究实验方法精选集
- 2019微生物组—宏基因组分析专题培训第三期
- 央视与遗传发育所合拍《锄禾者新说》科教片
- Python使用matplotlib可视化气泡图、并使用encircle函数自定义多边形圈定可视化图像中的指定区域(Bubble plot with Encircling)
- R语言伪相关性分析(Spurious Correlation)、相关关系不是因果关系:以哺乳动物数据集msleep为例
- 机器学习数据预处理之缺失值:预测填充(回归模型填充、分类模型填充)
- 基于Kmeans聚类算法的图像分割(色彩分割)实战