在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?

在 Hibernate 中,getCurrentSession 和 openSession 是两种不同的方法来获取 Session 对象,它们之间存在一些关键的区别。

  1. 事务管理方式
    • getCurrentSession:它依赖于当前的事务上下文,通常与 Spring 等框架集成,由框架负责事务的开启、提交和回滚。因此,使用 getCurrentSession 时,事务管理更为自动化和集成化。
    • openSession:它不依赖于事务上下文,需要手动管理事务,通过调用 begincommitrollback 等方法。
  2. 生命周期
    • getCurrentSession:其生命周期通常与当前的事务上下文关联。当事务提交或回滚时,Session 会自动关闭。在非事务环境中,需要配置 hibernate.current_session_context_class 为 thread,以便与当前线程关联。
    • openSession:其生命周期由开发者手动控制。需要在使用完 Session 后调用 close 方法进行关闭,否则可能会导致资源泄露等问题。
  3. 与线程的关联
    • getCurrentSession:会把 Session 和当前的线程关联起来,这通常是通过配置 CurrentSessionContext 来实现的。例如,JTASessionContext 就是通过当前执行的线程来跟踪和界定当前的 session
    • openSession:只是重新开启一个 Session,与当前线程没有直接的关联。
  4. 关闭方式
    • getCurrentSession:在事务结束(提交或回滚)时,Session 会自动关闭,无需手动调用关闭方法。
    • openSession:必须在使用完 Session 后手动调用 close 方法进行关闭。

总的来说,getCurrentSession 提供了更为自动化和集成化的事务管理和 Session 生命周期管理,适用于与 Spring 等框架集成的场景。而 openSession 则提供了更为灵活的手动管理方式,适用于需要更多控制权的场景。在实际应用中,应根据具体需求和场景来选择合适的方法。

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

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

相关文章

报表-设计器的使用

1、设计器目录结构 报表设计器以压缩包的方式提供,解压后,目录结构如下: 目录说明: 1、jdk-17:压缩包中自带的windows平台下的jdk17 2、lite-report:报表文件和数据源配置文件的保存位置 3、lite-repor…

Spring MVC(三) 参数传递

1 Controller到View的参数传递 在Spring MVC中,把值从Controller传递到View共有5中操作方法,分别是。 使用HttpServletRequest或HttpSession。使用ModelAndView。使用Map集合使用Model使用ModelMap 使用HttpServletRequest或HttpSession传值 使用HttpSe…

在AI大模型中全精度和半精度参数是什么意思?

环境: 大模型中 问题描述: 在AI大模型中全精度和半精度参数是什么意思? 解决方案: 在深度学习和高性能计算领域,"全精度"和"半精度"通常指的是模型中使用的数值表示的精度,具体涉…

hadoop学习---基于Sqoop的文件导入导出操作

在本地数据库创建数据库表: create database sqoop_test default character set utf8; use sqoop_test; CREATE TABLE emp ( EMPNO int(4) NOT NULL, ENAME varchar(10), JOB varchar(9), MGR int(4), HIREDATE date, SAL int(7), COMM int(7), DEPTNO int(2), PRI…

eslint关闭的方法总结

package.json关闭eslint 直接注释package.json文件中eslint的配置 "eslintConfig": {"root": true,此项是用来告诉eslint找当前配置文件不能往父级查找"env": {"node": true//此项指定环境的全局变量,下面的配置指定为nod…

Mysql实现双机bin-log热备份

在执行前务必停止对主服务器的mysql数据写入!!! 1.修改主机/etc/my.cnf配置,在mysqld下增加配置: log-bin mysql-bin server-id 1 2.获取MASTER_LOG_FILE、MASTER_LOG_POS信息 登录主机mysql,执行: …

【python基础】python经典题目100题

文章目录 前言初阶题目1.字符串2.列表3.元组4.字典5.运算6.random 模块7.open函数8.time模块时间9.其他 进阶题目 前言 本文主要是python经典题目100题,适合入门的新手。仅作自己学习的记录。 初阶题目 1.字符串 题目1:怎么找出序列中的最⼤最⼩值&am…

STM32使用ESP01S连接阿里云物联网平台

一、ESP01S烧录MQTT固件准备 首先准备好烧录工具,可以从官网上进行下载。 MQTT固件官网网址:AT固件汇总 | 安信可科技 (ai-thinker.com) 进去后如下图界面,向下翻找找到MQTT固件(1471)下载固件即可。 烧录工具光网地…

windows连接CentOS数据库或Tomcat报错,IP通的,端口正常监听

错误信息 数据库错误: ERROR 2003 (HY000): Cant connect to MySQL server on x.x.x.x (10060) Tomcat访问错误: 响应时间过长 ERR_CONNECTION_TIMED_OUT 基础排查工作 【以下以3306端口为例,对于8080端口来说操作是一样的,只需…

【java毕业设计】基于Spring Boot+vue的网上商城购物系统设计与实现(程序源码)-网上商城购物系统

基于Spring BootVue的网上商城购物系统设计与实现(程序源码毕业论文) 大家好,今天给大家介绍基于Spring BootVue的网上商城购物系统设计与实现,本论文只截取部分文章重点,文章末尾附有本毕业设计完整源码及论文的获取方…

Oracle闪回数据库【Oracle闪回技术】(二)

理解Oracle闪回级别【Oracle闪回技术】(一)-CSDN博客 Oracle默认是不开启闪回数据库的。如果开启闪回数据库的前提条件是,开启Oracle归档模式并启用闪回恢复区。 因为闪回日志文件存放在闪回恢复区中,如果在RAC环境下,必须将闪回恢复区存储在集群文件或者ASM文件中。 一…

揭秘APP广告变现:轻松赚取额外收入!

在移动应用(APP)的世界中,变现能力是衡量一个应用成功与否的关键指标之一。无论是个人开发者还是企业团队,如何通过应用创造收入,始终是一个备受关注的话题。今天,我们将深入探讨APP广告变现的路径&#xf…

使用nmcli命令在各Linux系统上统一的配置网络

前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访! 使用nmcli命令在各Linux系统上统一的配置网络https://myweb.myskillstree.cn/123.html 你是否会遇到在不同的Linux系统中配置网络时,修改的配置文…

Element UI 表单验证详解与实践

Element UI 作为一款流行的Vue.js UI框架,提供了丰富的表单组件和强大的表单验证功能,极大地简化了前端开发中的表单处理流程。本文将深入探讨Element UI的表单验证机制,包括基本的验证规则、自定义验证规则、以及一些高级应用场景&#xff0…

C语言初阶(6) - 指针

目录 1.指针是什么? 2. 指针和指针类型 2.1 指针 - 整数 2.2 指针的解引用 3. 野指针 3.1 野指针成因 3.2 如何规避野指针 4. 常量指针和指针常量 (const) 4.1.常量指针 4.2.指针常量 5. 指针运算 5.1 指针-整数 5.2 指针-指针 5.3指针的关系运算 6.…

[openwrt-21.02]MT7981+MT7976 WiFi debug指令

openwrt版本信息 NAME="OpenWrt" VERSION="21.02-SNAPSHOT" ID="openwrt" ID_LIKE="lede openwrt" PRETTY_NAME="OpenWrt 21.02-SNAPSHOT" VERSION_ID="21.02-snapshot" HOME_URL="https://openwrt.org/&qu…

【Python】selenium爬虫常见用法和配置,以及常见错误和解决方法

欢迎来到《小5讲堂》 这是《Python》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 前言无执行文件代码报错信息错误路径手动下载自动下载 选项配置Ch…

Ansible 自动化运维工具 - 了解和模块应用

目录 一. Ansible 的相关知识 1.1 Ansible 工具的简介 1.2 Ansible的四大组件 1.3 运维自动化工具 1.4 Ansible 和其它自动化运维工具对比 1.5 Ansible 的优缺点 二. Ansible 环境安装部署 2.1 管理端安装 ansible 2.2 配置主机清单 三. ansible 命令行模块 3.1 comm…

在编程中,什么是类的继承?

什么是继承 举个栗子,你是某披萨店的员工,你每天的工作就是在一张基础面饼上涂抹不同的香料制作不同的口味,假如某位顾客点了一份番茄味的香肠披萨,你可以直接在这张基础面饼上摊好香肠和番茄酱,而不是从头制作&#x…