1、Hibernate中Session的find、get、load方法的對比:sql
find()方法是hibernate2中的方法,在現有的hibernate3中已經不提倡使用它。如今提倡使用session.createQuery()建立一個query對象。session
example:String hql = 「from xxx where xxx …」;spa
List ls = session.find(hql,new Integer(x),Hibernate.INTEGER); hibernate
get()方法和find()方法在類級別的檢索時老是會執行當即檢索的,而無論咱們在hibernate配置文件中是否對該類定義使用lazy(懶加載);當檢索不到相關的對象時,這兩種方法都會返回NULL.orm
Load方法在進行類級別的檢索時,若是該類在hibernate的配置文件中並無定義檢索策略(延遲檢索),那麼和get方法和find方法同樣都是默認當即檢索。可是當檢索不到相關的對象時,load方法會拋出一個異常:ObjectNotException,若是在配置文件中對於該類添加了Lazy屬性後,使用load方法就會變成懶加載了。程序在執行到Student stu = session.load(Student.class)時並不會發送sql語句,只有在調用stu.getName()方法時纔會去發送sql語句查詢。而get和find都是在執行到session.get\find()時發送SQL語句。對象