zoukankan      html  css  js  c++  java
  • Hibernate的缓存机制

    Hibernate提供了一级缓存机制和二级缓存机制。

    /**
    * Hibernate一级缓存
    * 生命周期:session范围;生命周期比较短
    * 从缓存中读取数据的方法:get();load()
    * 往缓存写数据:save(),update(),delete(),get(),load(),lock()。。。。。
    */

           //一级缓存机制
    
    static void getDepartment(){
            
            Session session = HibernateUtil.getSession();
            
            Department dpt = null;
            try {
                
                dpt = (Department)session.get(Department.class, 1);
                System.out.println(dpt.getClass());
                session.evict(dpt);
                
                dpt = (Department) session.get(Department.class, 1);
                System.out.println(dpt.getClass());
                
            } catch (HibernateException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                session.close();
            }
            
            dpt = (Department) HibernateUtil.getSession().get(Department.class, 1);
            System.out.println(dpt.getClass());
        }

    注:一级缓存机制,只要session没关闭,就可以到缓存机制查找语句,不必去数据库 查询。如果一旦关闭session,缓存机制将从数据库中查询。
    /**
    * 二级缓存:
    * EHCache
    * OSCache
    * JbossCache
    * 二级缓存:由SessionFactory维护
    */

    //二级缓存机制
    
    static void twoCache(){
            
            Session session = HibernateUtil.getSession();
            Department dpt = null;
            
            dpt = (Department) session.get(Department.class, 1);
            System.out.println(dpt.getClass());
            //session.clear();
            
            dpt = (Department) HibernateUtil.getSession().get(Department.class, 1);
            System.out.println(dpt.getClass());
            
            dpt = (Department) HibernateUtil.getSession().get(Department.class, 1);
            System.out.println(dpt.getClass());
            
            //得到Hibernate统计信息
            Statistics statistics = HibernateUtil.getSessionfactory().getStatistics();
            System.out.println("put:"+statistics.getSecondLevelCachePutCount());
            System.out.println("Hit"+statistics.getSecondLevelCacheHitCount());
            System.out.println("Miss:"+statistics.getSecondLevelCacheMissCount());
        }

    您可以通过点击 右下角 的按钮 来对文章内容作出评价, 也可以通过左下方的 关注按钮 来关注我的博客的最新动态。 
    
    如果文章内容对您有帮助, 不要忘记点击右下角的 推荐按钮 来支持一下哦   
    
    如果您对文章内容有任何疑问, 可以通过评论或发邮件的方式联系我: 2276292708@qq.com
    
    如果需要转载,请注明出处,谢谢!!
    

      

  • 相关阅读:
    转载--C 的回归
    学嵌入式不是你想的那么简单--转载
    scanf() 与 gets()--转载
    getchar、getch、getche 与 gets()
    scanf()函数原理
    C/C++头文件一览
    再论函数指针、函数指针数组
    初论函数指针、指针函数、指针的指针
    转载--一个“码农”自述的血泪史:当了35年程序员,我最大的遗憾就是没抓住机遇转行
    转载--协方差的意义和计算公式
  • 原文地址:https://www.cnblogs.com/wlx520/p/4711306.html
Copyright © 2011-2022 走看看