返回顶部
首页 > 资讯 > 精选 >Hibernate扩展周期的Session怎么理解
  • 599
分享到

Hibernate扩展周期的Session怎么理解

2023-06-17 21:06:01 599人浏览 薄情痞子
摘要

这篇文章主要讲解了“Hibernate扩展周期的Session怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate扩展周期的Session怎么理解”吧!单个Hiberna

这篇文章主要讲解了“Hibernate扩展周期的Session怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate扩展周期的Session怎么理解”吧!

单个Hibernate Session实例和它所关联的所有持久化对象实例都被用于整个对话,这被称为session-per-conversation。Hibernate在同步的时候进行对象实例的版本检查,如果检测到并发修 改则抛出异常。由开发人员来决定是否需要捕获和处理这个异常(通常的抉择是给用户 提供一个合并更改,或者在无脏数据情况下重新进行业务对话的机会)。

在等待用户交互的时候,Hibernate Session 断开底层的JDBC连接。这种方式 以数据库访问的角度来说是***效的方式。应用程序不需要关心版本检查或脱管对象实例 的重新关联,在每个数据库事务中,应用程序也不需要载入读取对象实例。

// foo is an instance loaded earlier by the old session  Transaction t = session.beginTransaction(); // Obtain a new JDBC connection, start transaction   foo.setProperty("bar");   session.flush();    // Only for last transaction in conversation  t.commit();         // Also return JDBC connection  session.close();    // Only for last transaction in conversation

foo对象知道它是在哪个Session中被装入的。在一个旧session中开启一个新的数据库事务,会导致session获取一个新的连接,并恢复session的功能。

将数据库事务提交,使得session从JDBC连接断开,并将此连接交还给连接池。在重新连接之后,要强制对你没有更新的数据进行一次版本检查,你可以对所有可能被其他事务修改过的对象,使用参数LockMode.READ来调用Session.lock()。你不用lock任何你正在更新的数据。

一般你会在扩展的Session上设置FlushMode.NEVER,因此只有***一个数据库事务循环才会真正的吧整个对话中发生的修改发送到数据库。因此,只有这***一次数据库事务才会包含flush()操作,然后在整个对话结束后,还要close()这个session。

如果在用户思考的过程中,Session因为太大了而不能保存,那么这种模式是有 问题的。举例来说,一个httpsession应该尽可能的小。

由于 Session是一级缓存,并且保持了所有被载入过的对象,因此 我们只应该在那些少量的request/response情况下使用这种策略。你应该只把一个Session用于单个对话,因为它很快就会出现脏数据。

注意

早期的Hibernate版本需要明确的对Session进行disconnec和reconnect。这些方法现在已经过时了,打开事务和关闭事务会起到同样的效果。

此外,也请注意,你应该让与数据库连接断开的Session对持久层保持 关闭状态。换句话说,在三层环境中,使用有状态的EJB session bean来持有Session, 而不要把它传递到WEB层(甚至把它序列化到一个单独的层),保存在HttpSession中。

扩展session模式,或者被称为每次对话一个session(session-per-conversation), 在与自动管理当前session上下文联用的时候会更困难。你需要提供你自己的CurrentSessionContext实现。请参阅Hibernate Wiki以获得示例。

感谢各位的阅读,以上就是“Hibernate扩展周期的Session怎么理解”的内容了,经过本文的学习后,相信大家对Hibernate扩展周期的Session怎么理解这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Hibernate扩展周期的Session怎么理解

本文链接: https://lsjlt.com/news/293232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Hibernate扩展周期的Session怎么理解
    这篇文章主要讲解了“Hibernate扩展周期的Session怎么理解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Hibernate扩展周期的Session怎么理解”吧!单个Hiberna...
    99+
    2023-06-17
  • Hibernate Session管理怎么理解
    这篇文章主要介绍“Hibernate Session管理怎么理解”,在日常操作中,相信很多人在Hibernate Session管理怎么理解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate S...
    99+
    2023-06-17
  • Golang函数生命周期的扩展
    go 函数的生命周期涵盖从声明到退出的过程,但可通过以下方式扩展:init() 函数:在任何其他函数调用前执行,用于初始化全局变量等操作。defer 语句:将函数调用推迟到函数退出时执行...
    99+
    2024-04-18
    golang 函数生命周期
  • Hibernate Session缓存怎么理解
    本篇内容介绍了“Hibernate Session缓存怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Hibernate作为一种现在比...
    99+
    2023-06-17
  • PHP5 Session生命周期是怎样的
    PHP5 Session生命周期是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。PHP5有很多值得学习的地方,这里我们主要介绍PHP5 Session的使用,Sess...
    99+
    2023-06-17
  • Hibernate session问题怎么解决
    这篇文章主要介绍“Hibernate session问题怎么解决”,在日常操作中,相信很多人在Hibernate session问题怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Hibernate s...
    99+
    2023-06-17
  • Vue生命周期怎么理解
    这篇“Vue生命周期怎么理解”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue生命周期怎么理解”文章吧。1、定义生命周期函...
    99+
    2023-07-06
  • PHP自定义扩展之生命周期的示例分析
    这篇文章将为大家详细讲解有关PHP自定义扩展之生命周期的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php_request_startup这个阶段和php_module_startup差不多,都...
    99+
    2023-06-22
  • MySQL的物理存储结构和session生命周期
     MySQL的物理存储结构      (1).数据的组织形式--索引      (2).数据的row存储 ...
    99+
    2024-04-02
  • 怎么理解java线程生命周期
    本篇内容主要讲解“怎么理解java线程生命周期”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解java线程生命周期”吧!线程生命周期的几种状态刚接触线程生命周期时,我总是记不住,也理解不了...
    99+
    2023-06-16
  • 怎样理解Spring Bean生命周期
    怎样理解Spring Bean生命周期,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近把整个流程...
    99+
    2023-06-16
  • 怎么理解Hibernate Validator
    本篇内容介绍了“怎么理解Hibernate Validator”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • Hibernate ibatis怎么理解
    本篇内容主要讲解“Hibernate ibatis怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate ibatis怎么理解”吧!使用ibatis需要自己写SQL时,由于我们...
    99+
    2023-06-17
  • JavaSpringBean的生命周期管理详解
    目录Spring Bean的生命周期管理一、Spring Bean的生命周期二、通过@Bean的参数(initMethod ,destroyMethod)指定Bean的初始化和销毁方...
    99+
    2024-04-02
  • 怎么理解微信小程序中的生命周期
    本篇内容主要讲解“怎么理解微信小程序中的生命周期”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解微信小程序中的生命周期”吧!一、生命周期1. 什么是生命周期?生命周期 (Life Cycl...
    99+
    2023-06-25
  • 什么是PostgreSQL的扩展,如何安装和管理扩展
    PostgreSQL的扩展是一种可以添加额外功能或功能性的模块,可以通过安装和加载来扩展PostgreSQL的功能。扩展可以包括新的...
    99+
    2024-04-09
    PostgreSQL
  • Android Activity生命周期调用的理解
    目录状态启动模式操作APP时生命周期调用Activity异常生命周期总结状态 活动存放在一个叫返回栈的一个集合,当重新打开一个Activity时,它就会出现在栈顶。当要销毁该活动时...
    99+
    2024-04-02
  • 时区难题破解:用 PHP DateTime 扩展处理全球日期
    PHP DateTime 扩展是一个强大的工具,它可以帮助你轻松地处理日期和时间。它提供了一系列函数和类,可以让你轻松地格式化日期和时间、获取当前时间戳、比较两个日期或时间、计算两个日期或时间之间的差值等等。 使用 DateTime 处...
    99+
    2024-02-21
    PHP DateTime 时区 日期 时间
  • 日期处理的奥秘:掌握 PHP DateTime 扩展的威力
    PHP DateTime 扩展是处理日期和时间数据的利器,它提供了丰富的功能,可以满足各种日期和时间相关任务的需求。本文将带领您深入了解 DateTime 扩展的特性和用法,并通过代码示例演示如何使用其强大功能,帮助您提高开发效率。 D...
    99+
    2024-02-21
    PHP DateTime 日期 时间 格式化 操作 比较
  • 怎么设置session的有效期
    在设置session的有效期之前,需要先确保您的应用程序已经启用了session功能。要设置session的有效期,您可以使用以下方...
    99+
    2023-08-18
    session
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作