hibernate二级缓存

参考文章:http://blog.csdn.net/wtz20110803/article/details/7297579数据库

缓存类型:类,集合 和 查询的缓存:缓存

1.一级缓存的主要做用不是用来提升性能,而是用来管理对象session

2.其中对象变化了能够更新到数据库中性能

3.一次会话级别的成为一级缓存,应用程序级别(sessionfactory级别)的成为二级缓存.net

4.二级缓存默认是不开启的对象

5.用集合缓存的话类的缓存也必需要打开,由于集合缓存中存的是每一项的ID,若是没有类的blog

  缓存,则下次查询的时候因为二级缓存中没有此类,他会根据ID去数据库中查询,效率降低get

  所以将类缓存,才能到二级缓存区中根据ID查找出来it

6.不论一级仍是二级缓存,都是在使用OID的方式获取对象时才有效,例如get或load方法io

7.HQL查询中,对于query.list()默认不会使用缓存,即便写成where id=1也不会,但会放入缓存之中

8.在使用HQL查询时,若是采用iterate()方法查询,则会使用缓存

  由于这个方法是先查询全部符合条件的ID集合,再一个一个的按照ID查找数据,就可以使用缓存了

  可是其有N+1次查询的问题,提高性能有限

9.查询缓存(此时将条件做为key缓存存储起来,若条件改变则缓存无效):

  使用查询缓存session.createQuery("XXX")  .setCacheable(true)  .list();

  主映射文件中的配置:

  <property name="cache_use_query_cache">true</property>

  使用时query查询时,setCacheable设置TRUE;

相关文章
相关标签/搜索