这是我最近看shop++4.0 源码 体会到的一些东西,因为要做二次开发,所以先记录下来。


1.使用load()方法:
         hibernate认为该id对应的对象(数据库记录)在数据库中是一定存在的,使用代理来延迟加载该对象。在用到对象中的其他属性数据时才查询数据库,如果数据库中不存在该条记录,此时会抛异常,load方法抛异常是指在使用该对象的数据(调用get()方法获取属性)时,当数据库中不存在该数据时,才抛出异常,而不是在创建这个对象时。由于session缓存问题,在load时会先查一下session缓存看看该id对应的对象是否存在,如果不存在则创建代理。所以如果你知道该id在数据库中一定有对应记录存在就可以使用load方法来实现延迟加载。

2.使用get()方法:
        hibernate会确认一下该id对应的数据是否存在,首先在session缓存中查找,然后在二级缓存中查找,还没有就查数据库,数据库中没有就返回null。