hibernate緩存理解

1Hibenate中一級緩存,也叫作session的緩存,它能夠在session範圍內減小數據庫的訪問次數!  只在session範圍有效! Session關閉,一級緩存失效!面試

2)當調用sessionsave/saveOrUpdate/get/load/list/iterator方法的時候,都會把對象放入session的緩存中。 sql

3Session的緩存由hibernate維護, 用戶不能操做緩存內容; 若是想操做緩存內容,必須經過hibernate提供的evit/clear方法操做。數據庫

特色:緩存

        只在(當前)session範圍有效,做用時間短,效果不是特別明顯!session

        在短期內屢次操做數據庫,效果比較明顯!spa

 

 

  • 緩存相關幾個方法的做用hibernate

session.flush();       讓一級緩存與數據庫同步對象

                 session.evict(arg0);    清空一級緩存中指定的對象get

                 session.clear();       清空一級緩存中緩存的全部對象同步

 

在什麼狀況用上面方法?

                 批量操做使用使用:

                          Session.flush();   // 先與數據庫同步

                          Session.clear();   // 再清空一級緩存內容

                        

 

 

  • 面試題1 不一樣的session是否會共享緩存數據?

不會。

User1  u1 = Session1.get(User.class,1);   u1對象放入session1的緩存

Session2.update(u1);     u1放入session2的緩存

 

U1.setName(‘new Name’);

 

若是生成2update sql 說明不一樣的session使用不一樣的緩存區,不能共享。

 

  • 面試題2 listiterator查詢的區別?

list()

一次把全部的記錄都查詢出來,

會放入緩存,但不會從緩存中獲取數據

        Iterator

                 N+1查詢; N表示全部的記錄總數

                 即會先發送一條語句查詢全部記錄的主鍵(1),

再根據每個主鍵再去數據庫查詢(N)!

會放入緩存,也會從緩存中取數據!

相關文章
相關標籤/搜索