【问题标题】:How to use Hibernate to cache table data and speed-up queries?如何使用 Hibernate 缓存表数据和加速查询?
【发布时间】:2018-01-06 01:33:20
【问题描述】:

我在我的项目中使用 Hibernate 4、JSF 和 Spring。

我有如下表格:ValidStatusValid GroupValidAccess,其中我已经填充了一些默认数据。

我必须将所有这些表数据放在缓存中,以便在不同页面中的任何时候,我都可以使用这些表来授权用户。

我们如何缓存这些表数据?在这种情况下我是否必须使用二级缓存,或者其他方法也可以?

【问题讨论】:

    标签: java spring hibernate caching jpa


    【解决方案1】:

    第一级缓存仅在当前运行的Session(又名EntityManager)打开时才有效。

    两个并发事务将在不同的Session(s) 中运行,因此每个事务都有自己的一级缓存,这不是您的目标。

    您想要2nd Level Cache,它在并发Session(s) 之间共享:

    【讨论】:

    • 感谢任何 gud 示例如何与 JSf+Spring 应用程序集成?
    【解决方案2】:

    Hibernate 具有默认的缓存能力。

    Hibernate 一级缓存是 Session 级缓存,所以如果对象当前在 Hibernate 会话中,就会从中获取结果。

    因此,你不需要缓存获取的结果,它已经被hibernate缓存了。

    另请参阅

    https://stackoverflow.com/a/20369520/892994

    Hibernate Caching

    【讨论】:

    • 但我只希望有效的表数据在缓存中,而不是每个表或查询数据都存储在缓存中
    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 2014-11-28
    • 2011-12-18
    • 2021-12-24
    • 2011-04-03
    • 2013-12-05
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多