【问题标题】:Should I be using hibernate 2nd level caching?我应该使用休眠二级缓存吗?
【发布时间】:2011-08-01 19:57:47
【问题描述】:

我有一个具有特定状态的域对象,当服务对象处理某个事件时,我需要检查与该状态匹配的所有实例。此事件可能会相当频繁地发生,因此每次执行休眠查询都会效率低下。因此,我收集了这些在启动时存储并在需要时进行维护的集合。

我的问题是,如果我配置了 hibernates 二级缓存,我是否可以在不关心性能的情况下对我的代码进行以下更改?

来自:

public void handleEvent(SomeEvent someEvent) {
    for (Entity entity : matchedEntitiesSet) {
         // evaluate each entity for required changes. update state as needed
         // persist any changes
    }

    // update my collection with the current repository result.
}

到:

public void handleEvent(SomeEvent someEvent) {
    for (Entity entity : dao.getSomeEventsByCriteria(criteria)) {
         // evaluate each entity for required changes. update state as needed
         // persist any changes
    }
}

实际上,我会改为专门使用 DAO,而不是在我的服务中维护一组所述匹配的实体。

【问题讨论】:

    标签: java hibernate caching


    【解决方案1】:

    是的,这正是what the second-level cache/query cache 的用途。 Hibernate 将比您更一致、更有效地处理它。您的分析器将帮助您调整缓存以满足您的参数。在尝试优化应用之前,您确实对应用进行了概要分析,对吗?

    【讨论】:

      【解决方案2】:

      看起来如果您启用查询缓存和二级缓存,那么它应该可以正常工作。 http://www.javalobby.org/java/forums/t48846.html

      【讨论】:

        猜你喜欢
        • 2010-10-20
        • 2019-04-02
        • 2017-07-05
        • 2011-07-08
        • 1970-01-01
        • 2010-10-03
        • 2018-04-03
        • 2016-06-23
        相关资源
        最近更新 更多