1. 程式人生 > >【Hibernate】

【Hibernate】

plain cglib nat ace lib 查找 OS lai obj

1.hibernate的load和get有什麽作用。

① load方法認為該數據在數據庫中一定存在,可以放心的使用代理來延遲加載,如果在使用過程中發現了問題,只能拋異常(ObjectNotFoundException)load方法加載實體對象的時候,根據映射文件上類級別的lazy屬性的配置(默認為true)
  • 為true,則首先在session中查找,如果不存在,使用延遲加載,返回實體的代理類對象(該代理類為實體類的子類,由CGLIB動態生成)等到具體使用該對象(除獲取OID以外)的時候,再查找二級緩存和數據庫,如果沒找到,則會拋出一個ObjectNotFoundException
  • 若為false,就跟Hibernate get方法查找順序一樣,只是最終若沒發現符合條件的記錄,則會拋出一個ObjectNotFoundException。
② 而對於get方法,hibernate一定要獲取到真實的數據,否則返回null,首先在session緩存中查找,然後去二級緩存中查找,再到數據庫查找。

【Hibernate】