2016-09-22 121 views
5

我需要一種方法來避免多次執行相同的查詢。 我不需要代碼角度的任何幫助。高層次的方法會很好。如何避免多次執行相同的查詢?

當前我在不同的類中執行相同的hibernate查詢,這些執行是同一請求的一部分。 截至目前,我正在使用請求級緩存來存儲數據。後來,我從緩存而不是數據庫中提取這些數據來提高性能。但我想知道是否還有其他方法可以跟上述方法分開。

如果您可以提供幫助,這將非常有幫助。

感謝

+0

我有點驚訝,重複的查詢不會在數據庫本身的〜0 ms內返回。 –

+0

我建議重構代碼的相關部分,以便每個請求只執行一次有問題的查詢。 –

+0

@Joop Eggen ..感謝您的回覆。它是Oracle還是Hibernate的現有功能? – Rehman

回答

0

你可以註冊一個Web偵聽器將實施ServletContextListener。 您需要實施contextInitialized(應用程序部署)和contextDestroyed(應用程序取消部署)。

@WebListener 
public final class CacheBootstrap implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent sce) { 
     // load data into cache (hql?) 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent sce) { 
     // unload data from cache (hql?) 
    } 
} 
相關問題