1. get和load區(qū)別
load加載方法:
Java代碼
Users user = (Users)session.load(Users.class, new Integer(1));
Users user = (Users)session.load(Users.class, new Integer(1));
get加載方法:
Java代碼
Users user = (Users)session.get(Users.class, new Integer(1));
Users user = (Users)session.get(Users.class, new Integer(1));
以上面代碼為例:
區(qū)別一:如果沒有id為1的Users對象,那么,如果通過get方法加載,則返回的是一個null,如果通過load加載,則返回一個代理對象,如果后面代碼如果調(diào)用user對象的某個屬性(比如user.getPassword())會拋出異常:org.hibernate.ObjectNotFoundException
區(qū)別二:load支持延遲加載,get不支持延遲加載
也就是說:Users user = (Users)session.load(Users.class, new Integer(2));這句代碼不會去執(zhí)行數(shù)據(jù)庫查詢,只有用到user時(shí)才會去執(zhí)行數(shù)據(jù)庫查詢,而Users user = (Users)session.get(Users.class, new Integer(1));則立即去執(zhí)行數(shù)據(jù)庫查詢。 所以Users user = (Users)session.load(Users.class, new Integer(2));不會執(zhí)行任何sql.
緩存加載--get支持一級緩存。load支持二級緩存。不查詢數(shù)據(jù)庫只是到緩存中提取數(shù)據(jù)。緩存沒有然后轉(zhuǎn)至數(shù)據(jù)庫。load 一級轉(zhuǎn)二級然后至數(shù)據(jù)庫,數(shù)據(jù)變化小性能會高些。
延遲加載是在提取關(guān)聯(lián)對象的時(shí)候才有效果!
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報(bào)。