News news =(News) this.getHibernateTemplate().get(News.class, id); 
仅仅是取得数据;
this.getHibernateTemplate().load(Entity,id)
这个是覆盖。谢谢!

解决方案 »

  1.   

    谢谢一楼的解释,
    那我这样理解。
    {
    News news;
    public News find(){
      return news=this.getHibernateTemplate().load(Entity,id);
                      }
    }
    是从数据库中根据ID读取值,然后返回覆盖news,然后返回news,应该也可以达到相同的效果啊?
    还是我对覆盖理解的不正确?
      

  2.   


    load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:   1. 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
       2. Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
       3. load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。
      

  3.   

    this.getHibernateTemplate().get()
    跟this.getHibernateTemplate().load()
    如果查找数据库中存在的数据时是一样。
    当用load()方法查找数据库中没有的方法时会抛出异常
    而get()方法不会,它返回null
      

  4.   

    可我用这两个方法分别做数据查找把实体传给delete()方法,相同的数据,load()就报异常get()就成功(数据已经存在)。
      

  5.   

    1.当对象不存在并且是立即加载时,get()方法返回null,但load()方法弹出了例外
    2.get()方法使用立即加载的方式发送sql语句,并得到已经初始化的对象,而load方法则根本不发送sql语句,它返回一个代理对象,直到这个对象被访问时,此代理对象才被初始化