我怎么知道对象来自何处,会话缓存或sessionFactory缓存

时间:2017-02-18 03:26:21

标签: java hibernate caching

在Hibernate中,我们可以使用会话缓存&会话工厂级缓存。

现在如果两者都启用了,如果我正在获得一个实体,那么有什么方法可以知道实体来自哪里?无论是来自第一级还是第二级缓存。我们在Session中有任何方法可以知道吗?

1 个答案:

答案 0 :(得分:2)

如果在查询实体的标识符之前知道该实体的标识符,则可以检查2LC缓存以确定该实体是否至少缓存在Android Virtual Device范围的缓存中。您可以使用以下方法执行此操作:

  

session.getSessionFactory()。getCache()。containsEntity(EntityClass.class,entityId);

您可以通过构造实体的虚拟实例,设置标识符值然后调用方法来询问1LC:

  

session.contains(theEntityInstance);

了解在这两种情况下,如果在调用这两种方法之一之前已使用该标识符发出了对该特定实体的查询,则该实体将存在,并且这两个方法调用的结果将始终为{{ 1}}。