Hibernate中load()与get()的区别

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即可

 

posted @ 2010-07-26 17:28  东苑草根  阅读(162)  评论(0编辑  收藏  举报
手牵手 一步两步三步 往上爬