天天看點

【hibernate架構】緩存機制之一級緩存

什麼是緩存:我們在記憶體中開辟一塊空間,把本來應該存儲在硬碟上的東西,然後給它放在記憶體裡,将來要讀的時候從記憶體中讀,這個部分就叫做緩存。

在hibernate有三種緩存,一級緩存,二級緩存和查詢緩存。

一級緩存是session級别的緩存。

例子:

測試結果:

hibernate: 

    select

        category0_.id as id0_0_,

        category0_.name as name0_0_ 

    from

        category category0_ 

    where

        category0_.id=?

c0

取了兩次category_1,但是隻發出1條sql語句,第二次拿資料是從緩存中拿。

測試2:

發出兩條sql語句去取資料。

證明一個session是不能去拿另外一個session的緩存的。

假如利用多線程取資料,每次資料都從不同的session中取,這樣就導緻每一次查詢都會通路資料庫。如何解決?

解決方案:每個session都有各自的緩存,那麼我何不弄一個大的緩存,把所有的緩存資訊都存在這個大的緩存裡。到查詢資訊的時候,去大緩存中去查找,找不到了再去資料庫查找。這個緩存我們稱之為二級緩存。

二級緩存在下一個文檔裡:http://blog.csdn.net/acmman/article/details/44132207

轉載請注明出處:http://blog.csdn.net/acmman/article/details/44132153