休眠和ehcache

时间:2012-10-10 09:12:08

标签: hibernate caching ehcache

我在我的应用程序中使用带有hibernate的ehcache。

我可以使用ehcache进行缓存,但我正在努力实现这样的目标:

  1. 我想首先缓存我的应用程序中经常使用的数据库表。

  2. 缓存表后,如何在我的hql查询中使用它。 就像在我的hql查询中一样,我为各自的db表使用Pojo类名。在这种情况下,我如何使用我的hql查询。

  3. 请提供上述文件或支持。

1 个答案:

答案 0 :(得分:1)

The documentation of ehcache explains this in detail

基本上,您可以使用@Cache注释告诉Hibernate对缓存的访问类型。

在ehcache配置中,您可以为每个实体配置一个缓存;班级名称是关键。这允许您定义每个实体缓存的元素数量。

如果您希望Hibernate缓存查询,请将属性hibernate.cache.use_query_cache设置为true。当你使用HQL时,Hibernate将“做正确的事情”。

<强> [编辑]

  

我如何填写缓存?

您可以尝试加载对象,以便在Hibernate需要它们进行某些查询时它们位于缓存中。

但缓存是一个非常复杂的话题。有许多因素允许和阻止使用缓存。如果您只是简单的情况,缓存将“正常工作”,您不需要做任何事情。如果你有复杂的HQL,任何事情都可能发生。我已经看到了相同查询可能需要100ms或10s的示例,具体取决于where子句中的值。我见过代码,缓存使整个事情变慢。我已经看到了代码,我们从Hibernate会话中请求了底层连接,并且自己完成了所有操作,因为Hibernate根本不符合要求。

通常的做法是尽可能简化代码并在生产中运行结果一段时间。随着时间的推移,用户将开始抱怨它太慢的地方。然后,您可以优化这几个地方。这样,您就不会在用户不关心的代码上浪费时间。