13-hibernate二级缓存配置

来源:互联网 发布:淘宝日本代购有真的吗 编辑:程序博客网 时间:2024/04/30 06:05

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());

0 0
原创粉丝点击