1.get和load都是基于oid(主键)的检索方式
2.区别:
eg:通过以下两种方式来查询顾客信息代码:
Customer customer = session.get(Customer.class, 8);
Customer customer = session.load(Customer.class, 8);
get:get是关联级别的延迟加载,对于类级别,get没有延迟加载,它会立即执行sql,返回的真实对象,如果数据库没有数据,会报空指针异常
load:load是类级别的延迟加载,它不会立即执行sql,返回的是代理对象,当我们调用实体类的非主键属性时,才会执行sql,
如果数据库没有数时,会报ObjectNotFoundException异常
hibernate延迟加载都是通过代理类来实现的
顾客实体类
/**
* 顾客表
*/
public class Customer {
private Integer cid;
private String cname;
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
}