当前位置: 首页 > 面试题库 >

Spring + Hibernate会话生命周期

刘瀚
2023-03-14
问题内容

在Spring下如何适当地完成Hibernate会话的“生命周期”?

SessionFactory由Spring自动创建并从Glassfish的连接池利用其数据库连接。目前,我正在通过进行Hibernate会话SessionFactory.getCurrentSession()。然后,我开始交易,完成工作,然后commit()rollback()结束。我需要做任何其他操作,如disconnect()close()flush()在任何时间或任何其他人,以便连接将被适当地返回到游泳池或就是一切已经自动春天呢?

有了很多这样的方法,这让我眼前一亮,无法理解应该何时执行操作,也许有人可以指出正确的方向?


问题答案:

由于SessionFactory由Spring自动创建,因此Spring框架将负责关闭连接。查看Spring资源管理

如果要检查。如果您正在为应用程序使用日志记录,则可以检查日志。就像:

(主)INFO [AnnotationSessionFactoryBean]关闭Hibernate SessionFactory

我从这个链接得到以下几行

这里的主要约定是创建Session实例。通常,应用程序具有单个SessionFactory实例,并且服务于客户端请求的线程从该工厂获取Session实例。SessionFactory的内部状态是不可变的。创建后,便会设置此内部状态。此内部状态包括有关对象/关系映射的所有元数据。实现者必须是线程安全的。



 类似资料:
  • 当使用JPA的Hibernate实现并使用Spring数据源管理这些资源时,EntityManager会话何时关闭?例如,下面的基本模式让Spring服务层调用Spring DAO层(@repository)。DAO存储库自动调用PersistentContext的EntityManager并执行DB操作。我的问题是,在getData服务方法完成之后,EntityManager会话何时关闭?我之所

  • 要了解Spring事件是否适合我正在处理的任务,我需要了解它们是如何工作的,它们存储在哪里?因为我可以猜测它们存储在Spring应用程序上下文中,如果应用程序崩溃则会消失,我的猜测正确吗?

  • 大部分会话的状态字如其名:连接中(CONNECTING)、已连接(CONNECTED)、已关闭(CLOSED)和未连接(NOT_CONNECTED)。状态转化依赖于客户端和服务器间发生的不同事件。 图2-6 会话状态和转化 有一个重要的参数你要设置的是当创建会话时的超时时间,它是Zookeeper服务允许一个会话宣称它过期的时间。如果服务在时间t内没有收到指定会话相关的消息,它就会宣称会话过期了。

  • 问题内容: 我有一个使用spring和hibernate的java stuts2 Web应用程序。 我越来越。 SpringBean.xml hibernate.cfg.xml CustomerServiceImpl.java CustomerDaoImpl.java CustomerAction.java 我得到的例外 问题答案: 您在Spring配置中指定了一个事务管理器,但是没有关于何时或何

  • 注:本文档提供的生命周期指的是 Universal App 的生命周期,它依赖 rax-app 提供的 runApp方法。 App 级生命周期 launch  在 App 启动时触发 使用生命周期 你可以使用 rax-app 提供的 useAppLaunch 来注册 App 级别的生命周期。 示例: import { useAppLaunch } from 'rax-app'; useAppLa

  • 我们大致为WebAPplication设计了4个生命周期: 请求初始化其实就是从URL中解析提取出{module}, {action}, {method}; 然后再根据{module}, {action}, {method}找到对应的Controller文件; 然后再调用对应的{method},完了之后再发送响应。当然响应的过程中肯定是要顺带着解析下模板标签啦。 恩,这就完了,貌似感觉很简单啊。