Hibernate中load和get方法的区别,load方法为什么查不到会报错?
------解决方案--------------------
① 都可以获取相应的持久化对象,如果该对象存在,两个方法是一样的。如果对象不存在,get方法返回null,而load方法则抛org.hibernate.ObjectNotFoundException异常
② 使用get 去查询数据,(先到session级/二级)会立即向db发出查询请求(select ...), 如果你使用的是 load查询数据,(先到一级、二级))即使查询到对象,返回的是一个代理对象,如果后面没有使用查询结果,它不会真的向数据库发select ,当程序员使用查询结果的时候才真的发出select ,这个现象称为懒加载(lazy)
③ 如何选择使用哪个: 如果你确定DB中有这个对象就用load(),不确定就用get()(这样效率高)