1

我正在尝试使用 JBossCache 作为 JPA/Hibernate 二级缓存提供程序来缓存重复调用的查询。查询返回特定类型的实体,我们称之为 FooType。

FooType 如下所示:

@Entity(name = FooType)
@Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL)
public class FooType {
   protected BarType barType;

   @ManyToOne(targetEntity = BarType.class, cascade = {
       CascadeType.ALL
   })
   BarType getBarType() {
       return barType;
   }
}

因此,Footype 具有多对一关联。现在,当我调用查询时,似乎只有很小的一部分被放入缓存中。我认为原因是因为我没有用@Cache标签标记关联。我对么?

但真正的问题是:

BarType 也有一些关联,这些返回的对象也提供关联等,构建了一个大的关联图。现在,我需要

a)注释所有这些类和

b) 还注释关联

为了缓存整个查询?

4

1 回答 1

1

您想要缓存的所有实体/集合都必须具有 @Cache 以便它们可以被缓存。查询缓存的工作方式略有不同,要缓存结果,您需要使查询对象可缓存。

顺便说一句,如果它真的有意义,请像往常一样缓存!

http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-cache

于 2011-07-29T07:45:48.660 回答