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如果需要轉載,請注明出處,謝謝??!
新聞熱點
疑難解答