Hibernate的二级缓存(sessionFactory)的实现原理与一级缓存(Session)是一样的,也是通过以ID为key的Map来实现对对象的缓存。
二级缓存和一级主要的区别在于:
一级缓存是session级别的,也就是只有在同一个session里缓存才起作用。
二级缓存是SessionFactory级别的,也就是对于同一个SessionFactory生产出来的Session都有效;
Hibernate的二级缓存工作内容:
1、在执行各种条件查询时,如果所获得的结果集为实体对象的集合,那么就会把所有的数据对象根据ID放入到二级缓存中。
2、 当Hibernate根据ID访问数据对象的时候,首先会从Session一级缓存中查找,如果查不到并且配置了二级缓存,那么会从二级缓存中查找,如果还查不到,就会查询数据库,把结果按照ID放入到缓存中,当第二次再查询的时候,是从缓存中抓取的,而不需要进行数据库的查询操作。
3、 删除、更新、增加数据的时候,同时更新缓存。