hibernate的session語句的那些事情(裏面有一個很值得學習的思想)

首先我們需要了解一下,hibernate框架的一大特色之一就是其採用了緩存,這是一個很讓我折服的地方,主要是在於,開發hibernate的那位同志,能夠學以致用,將硬件的的體系思維運用到軟件之上。hibernate框架採用緩存,分爲session級緩存(一級緩存,這個級別的緩存必須要有)和二級緩存(可以不要這個緩存級別,橫跨了內存和外存),這樣一來,我們在查詢的時候,sql語句並不一定不被執行,要看緩存的情況。

1、get() 與 load() 的愛恨糾葛(查詢路線,session級緩存-->二級緩存-->數據庫(sql語句開始執行))

get()----直接返回一個真實的對象,沒有則返回null。

load()----採用懶加載(延遲加載),先返回一個代理對象,當真正執行該對象時,纔去返回一個真實的對象,當執行時發現該真實對象不存在,則拋出該對象不存在的一個錯誤。

2、其實,hibernate裏頭,查詢不僅僅是按照上面兩種(按表查詢),還有一個叫做hql的查詢語句,hql是按照domain對象來查詢,不是數據庫表。hql語句不需要對jdbc進行二次封裝,增強了魯棒性(之前要封裝兩次)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章