Hibernate中load()与get()的区别
首先,当给定ID(主键)不能查找到对应数据时,load()方法将返回org.hibernate.ObjectNotFoundException异常,而get()方法则返回null.
其次,load()默认是返回一个代理,他并不查询数据库,直到真正需要的时候才会去查询数据库.比如
Book book =(Book)session.load(Book.class,new Integer(1));
book.getId(); // 1
book.getName(); // 2
代码1,是不会查询数据库的,
代码2,才会真正查询数据库,因此,
如果在1,2间插入session.close(),
那么代码2将报错,提示session is closed. ;
而get()则直接查询数据库.
Load()方法非常有用.当你只需要一个代理而不需要马上调用数据库.当你真正查询数据库的时候,你只需要给他关联一个session即可