1:Hibernate的一级缓存:

  1.1:使用一级缓存的目的是为了减少对数据库的访问次数,从而提升hibernate的执行效率;

   1.2:Hibernate中的一级缓存,也叫做session的缓存,它可以在session范围内减少数据库的访问次数,只在session范围内有效,session关闭,一级缓存失败;

  1.3:一级缓存的特点,只在session范围有效,作用时间短,效果不是特别明显,在短时间内多次操作数据库,效果比较明显。

  1.4:当调用session的save/saveOrUpdate/get/load/list/iterator方法的时候,都会把对象放入session缓存中;

  1.5:session的缓存是由hibernate维护的,用户不能操作缓存内容;如果想操作缓存内容,必须通过hibernate提供的evict/clear方法操作

  1.6:缓存相关的方法:

    session.flush();让一级缓存与数据库同步;

    session.evict();清空一级缓存中指定的对象;

 

    session.clear();清空一级缓存中所有的对象;

  1.7:不同的session是否会共享缓存数据?

      不会哦~~~

  1.8:list和iterator的区别?

    list:一次性把所有的记录都查询出来了;

      会放入缓存,不会从缓存中取数据

    iterator:N+1次查询,

          N表示所有的记录总数,即会发送一条语句查询所有的记录的主键(1),再根据每一个主键取数据库查询N;

          会放入缓存,也会从缓存中取出数据;