【问题标题】:What exactly is a session in hibernate? [closed]休眠中的会话到底是什么? [关闭]
【发布时间】:2021-04-04 07:34:13
【问题描述】:

根据 hibernate 的官方文档,会话是“Java 应用程序和 Hibernate 之间的主要运行时接口”。我知道会话的功能是在应用程序和数据库之间提供物理连接。但是,我的问题是,会话到底是什么,它在幕后是如何工作的?

【问题讨论】:

  • 它是与 Hibernate 交互的主要 API。您已经知道它可以做什么,那么您还需要知道什么? --- 至于它是如何在内部工作的,这是在此处扩展一个主题的方式,也就是说,这超出了 StackOverflow 的范围。
  • 顺便说一句,哪个“官方文档”? Session 接口现在通常被弃用,取而代之的是标准 EntityManager。
  • @chrylis-cautiouslyoptimistic- 我找不到休眠会话“通常已弃用”的信息。这是代表persistence contextextends jpa EntityManager API 的休眠特定接口

标签: java database hibernate


【解决方案1】:

休眠会话充当应用程序和数据库之间的缓冲区。它缓存从数据库中检索到的对象,因此如果再次需要这些对象,它可以提供这些对象而无需访问数据库。这对性能有好处,也可以确保 Java 代码对数据库的视图更加一致(缓存意味着没有不可重复的读取)。可以配置刷新模式,或者如果此缓存妨碍了应用程序代码可以刷新会话。

当应用程序保存更改时,hibernate 不会立即将插入和更新发送到数据库,更改会保存在会话中,以便在下次刷新会话时发送到数据库。 Hibernate 决定执行它们的顺序。这允许 hibernate 使用 jdbc 批处理,并且还减少了它必须执行的任何数据库锁定的范围。

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多