二級緩存和查詢緩存的結合使用


 
 
     String hsql=" from Organization  porg left join fetch porg.childern as corg ";
        List<Organization> results=super.getSession().createQuery(hsql).setCacheable(true).list();
        當沒有配置二級緩存,只配置查詢緩存是
        第一次的sql爲
     
         select
                organizati0_.ID as ID0_0_,
                childern1_.ID as ID0_1_,
                organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
                organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
                organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
                organizati0_.PID as PID0_0_,
                organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
                organizati0_.ORDER_NUM as ORDER7_0_0_,
                organizati0_.PERSON_ID as PERSON8_0_0_,
                childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
                childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
                childern1_.DESCRIPTION as DESCRIPT4_0_1_,
                childern1_.PID as PID0_1_,
                childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
                childern1_.ORDER_NUM as ORDER7_0_1_,
                childern1_.PERSON_ID as PERSON8_0_1_,
                childern1_.PID as PID0__,
                childern1_.ID as ID0__    
        from
                g_organization organizati0_    
        left outer join
                g_organization childern1_    
                        on organizati0_.ID=childern1_.PID
                        

            第二次sql爲
          
         select
                organizati0_.ID as ID0_1_,
                organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
                organizati0_.ORGANIZATION_SN as ORGANIZA3_0_1_,
                organizati0_.DESCRIPTION as DESCRIPT4_0_1_,
                organizati0_.PID as PID0_1_,
                organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
                organizati0_.ORDER_NUM as ORDER7_0_1_,
                organizati0_.PERSON_ID as PERSON8_0_1_,
                childern1_.PID as PID3_,
                childern1_.ID as ID3_,
                childern1_.ID as ID0_0_,
                childern1_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
                childern1_.ORGANIZATION_SN as ORGANIZA3_0_0_,
                childern1_.DESCRIPTION as DESCRIPT4_0_0_,
                childern1_.PID as PID0_0_,
                childern1_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
                childern1_.ORDER_NUM as ORDER7_0_0_,
                childern1_.PERSON_ID as PERSON8_0_0_    
        from
                g_organization organizati0_    
        left outer join
                g_organization childern1_    
                        on organizati0_.ID=childern1_.PID    
        where
                organizati0_.ID=?
Hibernate:    
        select
                organizati0_.ID as ID0_1_,
                organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
                organizati0_.ORGANIZATION_SN as ORGANIZA3_0_1_,
                organizati0_.DESCRIPTION as DESCRIPT4_0_1_,
                organizati0_.PID as PID0_1_,
                organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
                organizati0_.ORDER_NUM as ORDER7_0_1_,
                organizati0_.PERSON_ID as PERSON8_0_1_,
                childern1_.PID as PID3_,
                childern1_.ID as ID3_,
                childern1_.ID as ID0_0_,
                childern1_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
                childern1_.ORGANIZATION_SN as ORGANIZA3_0_0_,
                childern1_.DESCRIPTION as DESCRIPT4_0_0_,
                childern1_.PID as PID0_0_,
                childern1_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
                childern1_.ORDER_NUM as ORDER7_0_0_,
                childern1_.PERSON_ID as PERSON8_0_0_    
        from
                g_organization organizati0_    
        left outer join
                g_organization childern1_    
                        on organizati0_.ID=childern1_.PID    
        where
                organizati0_.ID=?
        
     
            
            但當配置上二級緩存,不配置查詢緩存的話。則第二次點擊仍然會發出查詢語句
          
        select
                     organizati0_.ID as ID0_0_,
                     childern1_.ID as ID0_1_,
                     organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
                     organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
                     organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
                     organizati0_.PID as PID0_0_,
                     organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
                     organizati0_.ORDER_NUM as ORDER7_0_0_,
                     organizati0_.PERSON_ID as PERSON8_0_0_,
                     childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
                     childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
                     childern1_.DESCRIPTION as DESCRIPT4_0_1_,
                     childern1_.PID as PID0_1_,
                     childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
                     childern1_.ORDER_NUM as ORDER7_0_1_,
                     childern1_.PERSON_ID as PERSON8_0_1_,
                     childern1_.PID as PID0__,
                     childern1_.ID as ID0__    
             from
                     g_organization organizati0_    
             left outer join
                     g_organization childern1_    
                             on organizati0_.ID=childern1_.PID
                            

        但當配置了二級緩存,再配上查詢緩存時。
         第一次爲
         
    select
                organizati0_.ID as ID0_0_,
                childern1_.ID as ID0_1_,
                organizati0_.ORGANIZATION_NAME as ORGANIZA2_0_0_,
                organizati0_.ORGANIZATION_SN as ORGANIZA3_0_0_,
                organizati0_.DESCRIPTION as DESCRIPT4_0_0_,
                organizati0_.PID as PID0_0_,
                organizati0_.ORGANIZATION_TEL as ORGANIZA6_0_0_,
                organizati0_.ORDER_NUM as ORDER7_0_0_,
                organizati0_.PERSON_ID as PERSON8_0_0_,
                childern1_.ORGANIZATION_NAME as ORGANIZA2_0_1_,
                childern1_.ORGANIZATION_SN as ORGANIZA3_0_1_,
                childern1_.DESCRIPTION as DESCRIPT4_0_1_,
                childern1_.PID as PID0_1_,
                childern1_.ORGANIZATION_TEL as ORGANIZA6_0_1_,
                childern1_.ORDER_NUM as ORDER7_0_1_,
                childern1_.PERSON_ID as PERSON8_0_1_,
                childern1_.PID as PID0__,
                childern1_.ID as ID0__    
        from
                g_organization organizati0_    
        left outer join
                g_organization childern1_    
                        on organizati0_.ID=childern1_.PID
                        

            而第二次 則直接從內存中獲取了。
                       
            
                        
           
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章