2011-08-01 68 views
4

我有一個域對象有一個特定的狀態,在服務對象處理某個事件時,我需要檢查與該狀態匹配的所有實例。這個事件發生得相當頻繁,所以每次做一個hibernate查詢都是低效的。因此,我收集了一些我在啓動時存儲的內容,並在需要時進行維護。我應該使用hibernate二級緩存嗎?

我的問題是,如果我配置了休眠狀態的二級緩存,我能否對我的代碼進行以下更改而不關心性能?

來自:

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,而不是我的服務中維護一套說相匹配的實體。

回答

2

是的,這正是what the second-level cache/query cache是。 Hibernate將比你更加一致和有效地處理它。您的分析器將幫助您調整緩存以符合您的參數。您在嘗試優化應用程序之前確實對應用程序進行了配置,對吧?

相關問題