Hibernate - get与load方法

  • 先看下load方法的执行结果
    Hibernate - get与load方法结果:
    执行91行时输出Hibernate语句以及类名
    Hibernate - get与load方法

get与load区别:

get:
  • 不支持延迟加载,执行get方法时,就去数据库查询
  • 返回的是Student类型
  • 如果查询对象不存在会返回null,这样很难查询错误原因,后面很可能会报空指针异常。
load:
  • 延迟加载(懒加载),只有要到了才会去数据库查询,节省开销,Hibernate建议用load
  • 执行load语句返回的不是Student类型,而是Student的一个子类,他是一个代理对象,EnhancerByCGLIB
  • 如果查询对象不存在会报类找不到异常,可以根据异常处理(异常不是错误,比如登录时,用户不存在或密码错误都会抛出异常。它是程序沟通的有效手段)
    Hibernate - get与load方法