hibernate的查詢快取

2021-09-21 05:28:06 字數 4653 閱讀 2354

在hibernate的使用中,大家多數時間都在討論一級快取和二級快取,而往往忽略了查詢快取。其實hibernate的查詢快取在使用過程中也起著同樣重要的作用。hibernate的查詢快取是主要是針對普通屬性結果集的快取, 而對於實體物件的結果集只快取id。在一級快取,二級快取和查詢快取都開啟的情況下作查詢操作時這樣的:查詢普通屬性,會先到查詢快取中取,如果沒有,則查詢資料庫;查詢實體,會先到查詢快取中取id,如果有,則根據id到快取(一級/二級)中取實體,如果快取中取不到實體,再查詢資料庫。

和一級/二級快取不同,查詢快取的生命週期 ,是不確定的,當前關聯的表發生改變時,查詢快取的生命週期結束。

查詢快取的配置和使用也是很簡單的:

1>查詢快取的啟用不但要在配置檔案中進行配置

true

2>還要在程式中顯示的進行啟用

query.setcacheable(true);

1.實體類:

student.jsva

public

class student

2.對映檔案

student.hbm.xml

<

class

name

="com.sxt.hibernate.cache.entity.student"

table

="sxt_hibernate_student"

>

<

idname

="id"

length

="4"

>

<

generator

class

="native"

>

generator

>

id>

<

property

name

="name"

length

="10"

>

property

>

class

>

3.hibernate配置檔案:

4.測試方法:

public

static

void main(string args)  

system.out.println("******************************=="); 

query = session.createquery("select s.name from student s"); 

//啟用查詢快取 

query.setcacheable(true); 

//沒有發出查詢語句,因為這裡使用的查詢快取 

names = query.list(); 

for (iteratorit = names.iterator(); it.hasnext();)  

t.commit(); 

} catch (exception e) finally  

}*//*  @suppresswarnings("unchecked") 

public static void main(string args)  

t.commit(); 

} catch (exception e) finally  

system.out.println("******************************=="); 

try  

t.commit(); 

} catch (exception e) finally  

}*//*  @suppresswarnings("unchecked") 

public static void main(string args)  

t.commit(); 

} catch (exception e) finally  

system.out.println("******************************=="); 

try  

t.commit(); 

} catch (exception e) finally  

}*//*    @suppresswarnings("unchecked") 

public static void main(string args)  

t.commit(); 

} catch (exception e) finally  

system.out.println("******************************=="); 

try  

t.commit(); 

} catch (exception e) finally  

}*//*  @suppresswarnings("unchecked") 

public static void main(string args)  

t.commit(); 

} catch (exception e) finally  

system.out.println("******************************=="); 

try  

t.commit(); 

} catch (exception e) finally  

}*/@suppresswarnings("unchecked") 

public

static

void main(string args)  

t.commit(); 

} catch (exception e)  finally  

system.out.println("******************************=="); 

try  

t.commit(); 

} catch (exception e)  finally  }

hibernate查詢快取

自 查詢快取的生命週期,當查詢關聯的表發生改變,那麼查詢快取的生命週期結束 delete update modify 啟用查詢快取 1.hibernate.cfg.xml中配置 true 2.中用setcacheable true 手動啟用 只對list 方法起作用 預設情況下list 每次都會發s...

Hibernate的查詢快取

在hibernate的使用中,大家都很熟悉一級快取和二級快取的使用,在hibernate中還有另一種快取,查詢快取。查詢快取是依賴於二級快取的。一.查詢快取的執行方式 hibernate的查詢快取是主要是針對普通屬性結果集的快取,而對於實體物件的結果集只快取id。在一級快取,二級快取和查詢快取都開啟...

hibernate的查詢快取

在hibernate的使用中,大家多數時間都在討論一級快取和二級快取,而往往忽略了查詢快取。其實hibernate的查詢快取在使用過程中也起著同樣重要的作用。hibernate的查詢快取是主要是針對普通屬性結果集的快取,而對於實體物件的結果集只快取id。在一級快取,二級快取和查詢快取都開啟的情況下作...