2016-09-22 122 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?) 
    } 
} 
相关问题