【问题标题】:how does hibernate do the caching mechanism, what is difference between first level cache and second level cachehibernate是怎么做缓存机制的,一级缓存和二级缓存有什么区别
【发布时间】:2016-11-24 15:41:47
【问题描述】:

休眠缓存机制是如何工作的?

缓存有什么要求,什么时候需要二级缓存?

我知道如何获得它,但我需要获得实时问题和我们可以获得它的场景。

【问题讨论】:

  • "休眠缓存机制是如何工作的?" - 当实体被加载和缓存时,实体管理器使用实体主键作为缓存键将对象存储在其缓存中,以防止通过实体管理器进一步访问重复访问数据库并返回序列化对象。 “缓存的要求是什么” - 请自行上网查找。

标签: hibernate


【解决方案1】:

一级缓存始终与 Session 对象相关联。 Hibernate 默认使用这个缓存。在这里,它处理一个又一个事务,意味着不会多次处理一个事务。主要是它减少了在给定事务中需要生成的 SQL 查询的数量。这不是在事务中完成每次修改后更新,而是仅在事务结束时更新事务。

二级缓存总是与会话工厂对象相关联。在运行事务时,它会在会话工厂级别加载对象,以便这些对象可用于整个应用程序,而不是绑定到单个用户。由于对象已经加载到缓存中,因此每当查询返回对象时,此时无需进行数据库事务。这样,二级缓存就起作用了。在这里我们也可以使用查询级缓存。稍后我们将讨论它。

【讨论】:

    【解决方案2】:

    在以下情况下很有用:

    You read-write database only via Hibernate because the second level cache is invalidated / updated per entity when an entity is updated/deleted via hibernate. It is not invalidated if the database is updated in a different way. If you are using query use query cache otherwise it will not work for query.
    

    【讨论】:

      【解决方案3】:

      你的问题有点宽泛。

      休眠缓存机制是如何工作的?

      Ans - 它在会话/会话工厂的帮助下工作,具体取决于缓存级别。会话/会话工厂保存实体对象的值并与其主键映射。它阻止我们在 db 中进行较少的 db 命中对象(即具有相同的主键或 id)。

      缓存有什么要求,什么时候需要二级缓存?

      Ans - 如上所述,它有助于提高性能。较小的 db 性能更高。一级缓存适用于单个会话。它是默认缓存。

      当我们需要一个实体需要在同一个会话工厂的不同会话之间共享时,我们使用二级缓存。 你可以阅读更多here

      【讨论】:

        猜你喜欢
        • 2010-09-25
        • 2018-03-02
        • 1970-01-01
        • 1970-01-01
        • 2014-11-28
        • 2011-12-18
        • 2012-12-12
        • 2015-03-11
        • 2015-05-14
        相关资源
        最近更新 更多