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如果需要转载,请注明出处,谢谢!!
新闻热点
疑难解答