何时会使用Hibernate的一级缓存?如何记录它?

6

有没有一种使用Hibernate日志级别的简单方法,可以查看是否使用了第一个缓存级别?

如果我执行以下HQL请求:“from Document d left join fetch d.folder where d.id=2”多次,在同一会话中,缓存会被使用吗?

谢谢

1个回答

2
Hibernate L1缓存通过主键存储实体。这意味着,如果您使用load()get()加载相同的实体(我认为这也适用于简单的查询,如:from Document d where d.id=2),它将被缓存。
在您的情况下,查询有点复杂,您将不得不使用L2。不幸的是,没有记录器指示L1活动(至少没有文档),但看到SQL查询应该足够了。
另请参阅:

关于在另一个实体上进行左连接提取的查询怎么样?谢谢链接。 - Quentin
@Quentin:我相信在这种情况下你将不得不退回到L2缓存。 - Tomasz Nurkiewicz
好的,你知道我该如何记录它(或者哪个类负责这个缓存),只是为了确认一下吗? - Quentin
@Quentin:不好意思,我在我的回答中提到的是L1缓存。 - Tomasz Nurkiewicz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接