什麼是快取:我們在記憶體中開闢一塊空間,把本來應該儲存在硬碟上的東西,然後給它放在記憶體裡,將來要讀的時候從記憶體中讀,這個部分就叫做快取。
在hibernate有三種快取,一級快取,二級快取和查詢快取。
一級快取是session級別的快取。
例子:
@test
public void testhuancun()
測試結果:
hibernate:
select
category0_.id as id0_0_,
category0_.name as name0_0_
from
category category0_
where
category0_.id=? c0
c0取了兩次category_1,但是只發出1條sql語句,第二次拿資料是從快取中拿。
測試2:
@test
public void testhuancun2()
測試結果:
hibernate:
select
category0_.id as id0_0_,
category0_.name as name0_0_
from
category category0_
where
category0_.id=? c0
hibernate:
select
category0_.id as id0_0_,
category0_.name as name0_0_
from
category category0_
where
category0_.id=? c0
發出兩條sql語句去取資料。
證明乙個session是不能去拿另外乙個session的快取的。
假如利用多執行緒取資料,每次資料都從不同的session中取,這樣就導致每一次查詢都會訪問資料庫。如何解決?
解決方案:每個session都有各自的快取,那麼我何不弄乙個大的快取,把所有的快取資訊都存在這個大的快取裡。到查詢資訊的時候,去大快取中去查詢,找不到了再去資料庫查詢。這個快取我們稱之為二級快取。
二級快取在下乙個文件裡:
hibernate快取機制
hibernate的快取機制 首先引入快取的目的 hibernate 在查詢資料時,首先到快取中去查詢,如果找到就直接使用,找不到的時候就會從物理資料來源中檢索,所以,把頻繁使用的資料載入到快取區後,就可以大大減少應用程式對物理資料來源的訪問,使得程式的執行效能明顯的提公升.什麼是快取 快取是位於應...
Hibernate快取機制
hibernate快取分類 session快取,一級快取.sessionfactory的快取分為內建快取和外接快取.內建快取中存放的是sessionfactory物件的一些集合屬性包含的資料 對映元素據及預定義sql語句等 對於應用程式來說,它是唯讀的.外接快取中存放的是資料庫資料的副本,其作用和一...
Hibernate快取機制
快取是位於應用程式與物理資料來源之間,用於臨時存放複製資料的記憶體區域,目的是為了減少應用程式對物理資料來源訪問的次數,從而提高應用程式的執行效能.hibernate在查詢資料時,首先到快取中去查詢,如果找到就直接使用,找不到的時候就會從物理資料來源中檢索,所以,把頻繁使用的資料載入到快取區後,就可...