Hibernate中的第一级缓存

时间:2013-11-28 10:49:41

标签: hibernate session caching

我是Hibernate的新手,正在阅读有关Hibernate First Level Cache的内容。 我有个疑问。 Will every session that is associated with the SessionFactory have an individual cache or for all the sessions there will be only one cache? 任何人都可以解释一下。

1 个答案:

答案 0 :(得分:2)

第一级缓存与Session对象关联。我们知道会话对象是根据会话工厂的要求创建的,一旦会话关闭就会丢失。类似地,与会话对象关联的第一级缓存仅在会话对象生效之前可用。它仅对会话对象可用,并且在应用程序的任何其他部分中的任何其他会话对象都不可访问。

一些要点

  1. 第一级缓存与“会话”对象关联,应用程序中的其他会话对象无法看到它。

  2. 缓存对象的范围是会话。会议结束后, 缓存的对象永远消失了。

  3. 默认情况下启用第一级缓存,您无法禁用它。

  4. 当我们第一次查询实体时,它会从数据库中检索并存储在与hibernate会话关联的第一级缓存中。

  5. 如果我们使用相同的会话对象再次查询同一个对象,它将从缓存中加载,并且不会执行任何sql查询。

  6. 可以使用evict()方法从会话中删除加载的实体。如果使用evict()方法删除了该实体,则下次加载此实体将再次进行数据库调用。

  7. 可以使用clear()方法删除整个会话缓存。它将删除存储在缓存中的所有实体。

  8. 引自:http://howtodoinjava.com/2013/07/01/understanding-hibernate-first-level-cache-with-example/