解决方案 »

  1.   

    说白了就是load会认为数据存在,访问数据库访问不不到就会报错,get必须先确认数据库有值才去访问数据
      

  2.   

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