1.hibernate中的缓存的作用是为了提高性能,因为如果网站发布的话,会有许多的人进行访问,如果每一个人都进行直接操作数据库的话,对数据库造成了很重的压力,为了减少访问数据库,提高数据库性能。就出现了缓存。
缓存原理:将数据库中查出来的数据放到缓存中,第一个用户访问的时候,是从数据库中取值,第二个人访问的时候直接就从缓存中取出,不对数据库操作,从而减少了数据库的访问。
2.Session中的重要的方法,如get\load\update\saveOrupdate\list\iterater\lock\save方法,都可以将对象放入一级缓存。即Session.
3.hibernate中的缓存分为一级缓存和二级缓存,一级缓存指Session,二级缓存指的是SessionFactory.
4.query,criteria不能将对象放入一级缓存。
5.一级缓存不能控制缓存数量,容易导致内存溢出。可以使用evict,clear进行手动清除。
6.hibernate.cfg.xml文件中的关于二级缓存的配置默认是true
7.hibernate中的二级缓存一般是由第三方提供,如:OScache
8.OScache.properties中的cache_capacity=10000表示配置缓存的大小。
9.hibernate二级缓存配置hibernate.cfg.xml
①开启二级缓存;默认开启<property name="hibernate.cache.use_second_level_cache">true</property>
②缓存提供者:<property name="hibernate.cache.provider_class">org.hibernate.cache.OSCacheProvider</property>
③配置缓存对象:在hibernate.cfg.xml中配置方法:<class-cache usage="read-only" class="cn.itcast.hibernate.domain.User"/>
映射文件中的配置方法:<cache usage="read-write"/>
10.配置缓存和不配置缓存的区别?
配置了缓存之后,运行get方法获取数据库中的数据的时候,只执行一次select,第二次从缓存中取出。
如果没有配置缓存,需要执行两次select.
11.hibernate中找数据的步骤:一级缓存---》二级缓存--》数据库
12.hibernate二级缓存中的专业属于:命中,miss
13.hibernate中获取命中次数、miss次数、put次数的方法:
Statistics st = HibernateUtil.getSessionFactory().getStatistics();
System.out.println(st);
System.out.println("put:" + st.getSecondLevelCachePutCount());
System.out.println("hit:" + st.getSecondLevelCacheHitCount());
System.out.println("miss:" + st.getSecondLevelCacheMissCount());