码迷,mamicode.com
首页 > Web开发 > 详细

Hibernate的缓存机制

时间:2015-08-07 18:40:57      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

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

如果需要转载,请注明出处,谢谢!!

  

Hibernate的缓存机制

标签:

原文地址:http://www.cnblogs.com/wlx520/p/4711306.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!