zoukankan      html  css  js  c++  java
  • Hibernate学习笔记_缓存

    一级缓存和二级缓存和査询缓存(面试题)                   

    a)    什么是缓存

    b)    什么是一级缓存,session级别的缓存

    c)    什么是二级缓存,SessionFactory级别的缓存,可以跨越session存在

            i.   经常被访间

          ii.   改动不大不会经常改动

         iii.   数重有限

    d)    打开二级缓存

          i.   hibernate.cfg.xml 设定:

    <property name= "cache.use_second_level_cache">true</property>
    
    <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider</property>

            ii.   @Cache注解(由hibernate扩展提供)

    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE)

    @Entity
    //@BatchSize(size=5)
    @Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
    public class Category {
        private int id;
        private String name;
    。。。。。。。。
    }

    注:使用EhCache二级缓存 需要导入ehcache-1.2.3.jar及commons-logging-1.0.4.jar包

    e)    load默认使用二级缓存,iterate默认使用二级缓存

    f)    list默认往二级缓存加数据,但是查询的时候不使用

    g)    如果要query用二级缓存,需打开查询缓存

    <property name="cache.use_query_cache">true</property>

    调用Query的setCachable (true)方法指明使用二级缓存

    例如:session.createQuery("from Category").setCacheable(true).list();

    @Test
        public void testQueryCache() {
            Session session = sf.openSession();
            session.beginTransaction();
            List<Category> categories = (List<Category>)session.createQuery("from Category")
                                        .setCacheable(true).list();
            
            
            
            session.getTransaction().commit();
            session.close();
            
            Session session2 = sf.openSession();
            session2.beginTransaction();
            List<Category> categories2 = (List<Category>)session2.createQuery("from Category")
            .setCacheable(true).list();
            
            session2.getTransaction().commit();
            session2.close();
        }

    h)    缓存算法:(纯为了面试)

             i.   LRU  LFU  FIFO

      1. Least Recently Used –最近很少被使用
      2. Least Frequently Used (命中率高低)
      3. First In First Out 按顺序替换

          ii.   memoryStoreEvictionPolicy = "LRU" (ehcache.xml中配置)

  • 相关阅读:
    Vue开源项目库汇总【壮灬哥出品,必为精品】
    nginx配置
    找出判断数据是否有相同的值
    CSS设置文字不能被选中
    js怎么删数组固定的值
    IO流中File文件最常用和直接的用法
    JComboBox实现当前所选项功能和JFrame窗口释放资源的dispose()方法
    java中经常使用的Swing组件总结
    JTextArea利用JScrollpane增加文本域滚轮(滚动条)
    JFrame关闭程序就退出的设置
  • 原文地址:https://www.cnblogs.com/enjoy-life-clh/p/4151792.html
Copyright © 2011-2022 走看看