使用EhCache进行session.createCriteria(...)。list()

时间:2010-06-12 16:06:30

标签: java hibernate ehcache

我正在对使用Hibernate中的二级缓存(启用EhCache)的性能提升进行基准测试,但它似乎并没有提高性能。实际上,执行查询的时间略有增加。

查询是:

session.createCriteria(MyEntity.class).list();

该实体是:

@Entity
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class MyEntity {
    @Id
    @GeneratedValue
    private long id;

    @Column(length=5000)
    private String data;

    //---SNIP getters and setters---
}

我的hibernate.cfg.xml是:

<!-- all the normal stuff to get it to connect & map the entities plus:-->
<property name="hibernate.cache.region.factory_class">
    net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>

MyEntity表包含大约2000行。

问题是在添加缓存之前,上面列出所有实体的查询平均花费了65毫秒。在缓存之后,它们平均需要74毫秒。有什么我想念的吗?是否还有一些需要做的事情可以提高性能?

1 个答案:

答案 0 :(得分:0)

默认情况下,查询结果缓存,只缓存实体。因此,每次运行查询时,仍会发出SQL,它返回与查询匹配的实体的ID。然后从缓存中检索这些实体(如果存在)。

如果要缓存查询结果,则需要turn that on explicitly