hibernate加載持久化對象的兩種方式---------------load方式和get方式

參考:http://my.oschina.net/u/1169535/blog/282483   

1. Hibernate get方法 html

    Hibernate確認該id對應的數據是否存在,首先在session緩存中查找,而後在二級緩存中查找,尚未就查詢數據庫,數據庫中沒有就返回null。 數據庫

2. Hibernate load方法 緩存

    加載實體對象的時候,根據映射文件上類級別的lazy屬性的配置(默認爲true),分狀況討論: session

    (1)若爲true,則首先在Session緩存中查找,看看該id對應的對象是否存在,不存在則使用延遲加載,返回實體的代理類對象(該代理類爲 實體類的子類,由CGLIB動態生成)。等到具體使用該對象(如在訪問延遲加載對象的具體屬性的時候(getClass,getId,OID除外))的時候,再查詢二級緩存和數據庫,若仍沒發現符合條件的記錄,則會拋出一 個ObjectNotFoundException。 spa

    (2)若爲false,與Hibernate get方法查找順序同樣,只是最終若沒發現符合條件的記錄,則會拋出一個ObjectNotFoundException。 .net

    詳見:http://www.zgxue.com/163/1633214.html
相關文章
相關標籤/搜索