1. 程式人生 > >hibernate的load和get方法的區別

hibernate的load和get方法的區別

1)當資料庫不存在對應ID資料時,呼叫load()方法將會丟擲ObjectNotFoundException異常,get()方法將返回null.

2)也就是延時載入的區別。load的方法預設要載入的物件是存在資料庫中的,返回的是一個代理物件而不是一個真正的類例項,當用到具體與資料庫有關的資料時候才查詢資料庫,而get方法直接查詢資料庫,返回類的例項。關於類的代理物件可以通過debug除錯的到。但是如果在內部記憶體中存在所要查詢的物件,無論物件是代理的(load出來的)還是類的例項(get出來的)都會返回記憶體中的形態。
3)第三點區別就是:get方法首先查詢session快取,沒有的話查詢二級快取,最後查詢資料庫;反而load方法建立時首先查詢session快取,沒有就建立代理,實際使用資料時才查詢二級快取和資料庫。