atitit.spring hibernate的事务机制 spring不能保存对象的解决

atitit.spring hibernate的事务机制 spring不能保存对象的解决

 

sessionFactory.openSession()

不能。。log黑头马sql语言..

 

 

 

sessionFactory.getCurrentSession().update(user);

中间走ok..log黑头也有累..

 

 

Spring中使用Hibernate,如果我们配置了TransactionManager,那么我们就不应该调用SessionFactoryopenSession()来获得Sessioin,因为这样获得的Session并没有被事务管理。

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

 

采用getCurrentSession()创建的session会绑定到当前线程中,而采用openSession()创建的session则不会。

采用getCurrentSession()创建的sessioncommitrollback时会自动关闭,而采用openSession()创建的session必须手动关闭。

使用getCurrentSession()需要在hibernate.cfg.xml文件中加入如下配置:

如果使用的是本地事务(jdbc事务)

<property name="hibernate.current_session_context_class">thread</property>

如果使用的是全局事务(jta事务)

<property name="hibernate.current_session_context_class">jta</property>

如果采用的时Hibernate4,使用getCurrentSession()必须配置事务,否则无法取到session

 

 

 

3 hibernateTemplate.getSessionFactory().getCurrentSession()

我们使用springhibernate结合,操作数据库最常用可能是HibernateTemplateHibernateTemplate中集成了很多使用的方法,可惜的是没的createQuery方法,也许我们使用hibernate的时候喜欢使用Query,我们可能会封装hibernateTemplate.getSessionFactory().getCurrentSession()方法得到Sessionsession创建Query,这是一个方法,但你应该会得到异常 “createQuery without an active transaction”,因为使用hibernateTemplate.getSessionFactory().getCurrentSession(),你是使用的hibernate的事务管理,而你指望spring管理的事务是hibernateTemplate,所以你会提示没有打开事务的异常,解决方法:1)使用hibernate事务处理,就像上面单独使用hibernate一样,但这也许不是你想要的。2)使用hibernateTemplateHibernateCallBack回调:

 

 

 

使用Hibernate的大多数应用程序需要某种形式的上下文相关的” session,特定的session在整个特定的上下文范围内始终有效。然而,对不同类型的应用程序而言,要为什么是组成这种上下文下一个定义通常 是困难的;不同的上下文对当前这个概念定义了不同的范围。在3.0版本之前,使用Hibernate的程序要么采用自行编写的基于 ThreadLocal的上下文session,要么采用HibernateUtil这样的辅助类,要么采用第三方框架(比如SpringPico), 它们提供了基于代理(proxy)或者基于拦截器(interception)的上下文相关session 

3.0.1版本开 始,Hibernate增加了SessionFactory.getCurrentSession()方法。一开始,它假定了采用JTA事务,JTA事务 定义了当前session的范围和上下文(scope and context)Hibernate开发团队坚信,因为有好几个独立的JTA TransactionManager实现稳定可用,不论是否被部署到一个J2EE容器中,大多数(假若不是所有的)应用程序都应该采用JTA事务管理。 基于这一点,采用JTA的上下文相关session可以满足你一切需要。 

更好的是,从3.1开 始,SessionFactory.getCurrentSession()的后台实现是可拔插的。因此,我们引入了新的扩展接口 (org.hibernate.context.CurrentSessionContext)和新的配置参数 (hibernate.current_session_context_class),以便对什么是当前session”的范围和上下文(scope and context)的定义进行拔插。 

 

 

 

 

Hibernate4 No Session found for current thread原因 一号门-程序员的工作,程序员的生活(java,python,delphi实战).htm

Spring整合hibernate4:事务管理.htm

getCurrentSession 与 openSession() 的区别 - LoveYouT的专栏 博客频道 - CSDN.NET.htm

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

20 best jquery 截图

digguka, January 05, 2012jQuery Image Crop - A very useful list of tools for cropping, zooming and resizing of images. Some of plugins come with the ability to upload croped images. 转载于:https://www.cnblogs.com/yqskj/archive/2013/05/25/3098411.html

【RK3399Pro学习笔记】一、Thinker Edge R 安装系统和VNC服务

目录下载固件安装USB驱动下载烧录工具刷机第一次开机连接WifiSSH登录换源设置语言安装VNC服务平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 风火轮论坛资料网盘 提取码&#xff1a;wqbd 下载固件…

第13章:直方图处理

第13章&#xff1a;直方图处理一、直方图的含义&#xff1a;1. 普通直方图&#xff1a;2. 归一化直方图&#xff1a;二、绘制直方图&#xff1a;1. 使用Numpy绘制直方图&#xff1a;2. 使用OpenCV绘制直方图&#xff1a;3. 使用掩码绘制直方图&#xff1a;三、直方图均衡化&…

操作系统 内存管理篇

一.程序的装入和链接 装入方式&#xff1a; 链接方式&#xff1a; 二.进程的内存映像 三.内存的分配 1.连续分配 分配方式&#xff1a; 2.不连续分配 分页&#xff1a;页面大小一致 引入快表&#xff08;和 cache 处理思路一致&#xff09; 升级到二级页表 分段&#xff1a;…

【Oracle】锁表查询与解锁

在PL/SQL中执行以下内容&#xff1a;如下语句 查询锁定的表: SELECT l.session_id sid, s.serial#, l.locked_mode,l.oracle_username,l.os_user_name,s.machine, s.terminal, o.object_name, s.logon_timeFROM v$locked_object l, all_objects o, v$session sWHERE l.object_i…

思维的新发展

原来不知道自己想要什么&#xff0c;一般习惯于三层&#xff0c;而且还是bll简单化的三层&#xff0c;现在是越来越清晰的明白自己想要什么了。 简单化的三层存在的问题&#xff1a; 1.表驱动的&#xff0c;N个表&#xff0c;就有N*3个类。 2.业务全部被放到了界面后面隐藏的类…

spring支持的事务管理

1、编程式事务&#xff1a; 需在spring.xml配置文件中&#xff0c; 1、配置数据源、 2、持久化模板(jdbc模板、hibernate模板、mybatis模板)、 对象里面注入的是数据源及框架的属性配置&#xff1b; 3、需编写事务管理器 transcationManager&#xff0c; 对象里面注入的是数据源…

【RK3399Pro学习笔记】二、Thinker Edge R 内网穿透以实现远程SSH

目录免费方案花生壳下载安装添加内网穿透映射测试平台&#xff1a;华硕 Thinker Edge R 瑞芯微 RK3399Pro 固件版本&#xff1a;Tinker_Edge_R-Debian-Stretch-V1.0.4-20200615 因Thinker Edge R安装的镜像为64位的版本 getconf LONG_BIT免费方案 花生壳 下载 在花生壳下载…

第14章:傅里叶变换

第14章&#xff1a;傅里叶变换一、理论基础&#xff1a;二、Numpy实现傅里叶变换&#xff1a;1. 实现傅里叶变换&#xff1a;2. 逆傅里叶变换&#xff1a;3. 高通滤波示例&#xff1a;三、OpenCV实现傅里叶变换&#xff1a;1. 实现傅里叶变换&#xff1a;2. 实现逆傅里叶变换&a…

代码能不能不要写得这么烂?!

我是一个研二的即将实习和毕业的普通屌丝研究生&#xff0c;带着几个研一的同学一起做数据挖掘项目。为了在毕业的时候防止青黄不接导致老师不让我毕业&#xff0c;于是从他们刚进实验室起&#xff0c;就“开始了设计模式和代码风格的培养”。具体的做法&#xff0c;就是扔给他…

MYSQL jdbc autoReconnect

http://blog.csdn.net/a9529lty/article/details/7104351 http://blog.163.com/huangfei_person/blog/static/58156675201092911507809/转载于:https://www.cnblogs.com/rgqancy/p/7097916.html

【Kali 树莓派版学习笔记】安装系统和VNC服务

目录下载固件和烧录系统第一次开机SSH连接换源设置语言安装VNC平台&#xff1a;树莓派3B 版本&#xff1a; Linux kali 5.4.83-Re4son-v7 #1 SMP Sat May 15 03:22:58 UTC 2021 armv7l GNU/Linux 下载固件和烧录系统 Get Kali 格式化TF卡 使用Win32DiskImager刷入镜像 第…

第15章:模板匹配

第15章&#xff1a;模板匹配一、模板匹配基础&#xff1a;1. cv2.matchTemplate()函数&#xff1a;2. 匹配原理&#xff1a;3. 查找最值&#xff1a;二、多模版匹配&#xff1a;1. 获取匹配位置集合&#xff1a;2. 循环&#xff1a;3.调整坐标4.标记匹配图像的位置​ 模板匹配是…

GridView 移除模板列

protected void gvMain_ItemDataBound(object sender, DataGridItemEventArgs e) { if (e.Item.ItemType ListItemType.AlternatingItem || e.Item.ItemType ListItemType.Item) { e.Item.Cells.RemoveAt(0); } } 转载于:https://ww…

事件处理机制--浏览器流程处理分析

事件处理机制--浏览器流程处理分析 js的运行是单线程的&#xff0c;单线程即一个时间只能做一件事。浏览器的运行是多线程的。 如下三种情况会进入事件队列&#xff08;任务队列&#xff09;中&#xff0c;但不立即执行&#xff1a; 1&#xff0e;定时函数 2&#xff0e;事件函…

第16章:霍夫变换

第16章&#xff1a;霍夫变换一、霍夫直线变换&#xff1a;1. 霍夫直线变换原理&#xff1a;2. HoughLines函数&#xff1a;3. HoughLinesP函数&#xff1a;2. 霍夫圆环变换&#xff1a;霍夫变换是一种在图像中寻找直线、圆形以及其他简单形状的方法。霍夫变换采用类似于投票的方…

一个java处理JSON格式数据的通用类(三)

/** *//** * 从json数组中解析出java Integer型对象数组 * param jsonString * return */ public static Double[] getDoubleArray4Json(String jsonString)...{ JSONArray jsonArray JSONArray.fromObject(jsonString); Doubl…

【树莓派学习笔记】九、C语言寄存器操作控制GPIO

目录CPU型号确定寄存器的地址问题GPIO寄存器GPFESLnGPSETnGPCLRn重要函数mmap函数munmap函数点灯程序平台&#xff1a;树莓派3B 版本&#xff1a; 2021-05-07-raspios-buster-armhf CPU型号确定 由 pinout命令可知&#xff0c;所用的板子Soc型号为BCM2837 寄存器的地址问题…

bzoj2527

首先环可以变成链来处理&#xff0c;对于l>r的情况就是修改区间[1,r],[l,mx]然后不难想到整体二分&#xff0c;二分答案k,然后算1~k场流星雨对国家的贡献然后判定将国家划分变成子问题解决&#xff0c;没什么难的终于不是tle&#xff0c;poi良心了一把 1 type wayrecord2 …

第17章:图像分割提取

第17章&#xff1a;图像分割提取一、用分水岭算法实现图像分割提取&#xff1a;1. 算法原理&#xff1a;2. 相关函数介绍&#xff1a;(1) 形态学函数回顾&#xff1a;(2) 距离变换函数distanceTransform&#xff1a;(3) 确定未知区域&#xff1a;(4) 函数connectedComponents对…