参考:
https://www.tutorialspoint.com/hibernate/hibernate_caching.htm
http://puredanger.github.io/tech.puredanger.com/2009/07/10/hibernate-query-cache/
http://www.baeldung.com/hibernate-second-level-cache
Hibernate 的缓存分为:
first level cache,second level cache,query level cache ,timestamp cache (一级缓存,二级缓存,查询缓存,和时间戳缓存)
1、一级缓存:Hibernate默认使用的是一级缓存。一级缓存是基于Session 的上下文的,当Session关闭了这个缓存也就是失效了
2、二级缓存:Hibernate的二级缓存是给予SessionFacotry的,SessionFactory可以提供给多个Session共享,当查询的时候先从一级缓存中查找响应的内容,如果没有找到再从二级缓存中查找,如果还没有找到的话再从数据库中查找
3、查询缓存:查询缓存是针对特定的查询而设置的缓存,缓存中不保留数据,只保留数据的主键,查询缓存不是在任何地方使用都能够提高效率的。
4、时间戳缓存:时间戳缓存是根据更新的时间戳来判断的,如果更新的时间戳在缓存的时间戳的前面则从缓存中读取,否则则从数据库中查询。