Hibernate中get方法与load方法的区别在哪?
望个位高手指点下,小弟感激不尽......

解决方案 »

  1.   

    重点是在延迟加载 load 是实现延迟加载的一种方式 当他查询到记录的时候首先返回的是这个类的代理类的对象 当你调用代理类的对象的方法的时候才会开始加载
    大概是这个意思吧 LZ可以稍微搜索下 介绍这方面的知识很多的
    http://sunfx870923.javaeye.com/blog/403667
      

  2.   

    get不支持懒加载 load支持 还有就是 当用get查询数据库不存在的记录时返回null 而load就报异常了
      

  3.   

    load 加载对象如果不存在就报错。
    get 加载的对象如果不存在就返回null
      

  4.   

    又来了,百度谷歌的事情全让csdn做了。
      

  5.   

    get不支持懒加载 ,load支持
    get查询数据库不存在的记录时返回null ,load就报异常了
      

  6.   

    lazy加载  和没有对象时  是否报错...
      

  7.   

    get是一般的用法;
    load是延迟加载。
    举个例子:
    class a{
      int a;  //假设这个是主键
      String b;
    }a instance = sess.load(a.class, 1);//你通过load得到A这个类的时候, 是个代理类, 空壳而已, 没有b这个String的;System.out.println(instance.b);  //这个时候才有b, 这个时候instance是实体类
      

  8.   

    hibernate中get方法和load方法的根本区别在于:如果你使用load方法,hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,所以它可以放心的使用,它可以放心的使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,但是万一数据库中不存在该记录,那没办法,只能抛异常,所说的load方法抛异常是指在使用该对象的数据时,数据库中不存在该数据时抛异常,而不是在创建这个对象时。由于session中的缓存对于hibernate来说是个相当廉价的资源,所以在load时会先查一下session缓存看看该id对应的对象是否存在,不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。 
    对于get方法,hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。 
      

  9.   


     hibernate中get方法和load方法的区别  
    http://www.phome.asia/forum/thread/16698.html
      

  10.   

    LOAD得到的是一个代理对象,而get不是,还有load支持延迟加载,而get不支持。
      

  11.   

    load延迟加载,真正使用的时候才会发sql语句,get立即加载~~
    load找不到对象会返回null,get找不到会报异常~~就这个区别~~
      

  12.   

    load会报异常?不会吧~~~搞错了吧~~我记得是get会报异常,我试试……