hibernate缓存包括一级缓存和二级缓存两大类:
1、hibernate一级缓存又称为“session的缓存”,它是内置的,不能被卸载,由于session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。在第一级缓存中,持久化类的每个实例都具有唯一的oid。
2、hibernate二级缓存又称为“sessionFactory的缓存”,由于sessionFactory对象的生命周期和应用程序的整个过程对应,因此hibernate二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题,因此需要采用适当的并发访问策略,该策略为被缓存的数据提供了事务隔离级别。第二级缓存是可选的,是一个可配置的插件,在默认情况下,sesssionFactory不会启用这个插件。
当hibernate根据ID访问数据对象的时候,首先从session一级缓存中查找,如果查不到,如果配置了二级缓存,就会从二级缓存中查找,如果都查不到,那么就会从数据库中查询,把结果按照ID放入到缓存中进行删除、更新、增加数据的时候,同时更新缓存。