load / get 区别
结合网上整理的关于load/get区别
1. 查找不存在记录时,get返回null, load抛ObjectNotFoundException
2. 当调用session.get()时,hibernate 会先去缓存(包括一级,二级)找,有则立即返回, 没有则立刻发sql,到db中去查。
当调用obj = session.Load(A.class, id)时,hibernate 返回代理对象,不会马上发sql去DB查,只有真正用到该对象的数据时(如obj.getName()), hibernate 先去缓存查找(一级,二级),如有,则返回,如没有则发sql到db中去查,如没有该id,则抛异常
使用场景:
1。如果加载对象目的为了访问其属性,用get
2。如加载对象为了删除或者建立与其它对象的关联关系,用load