hibernate的get/load的根本区别分为4点:
第一点是:load会抛出异常,get会返回空,一般采用的load方法。
第二点是:get只返回实体对象实例。而load返回的是代理类实体对象实例。
第三点是:get方法只能使用一级缓存。而load可以使用一级和二级缓存。
第四点是:都是通过id得到单个对象的方法
* 与get()的区别:
* 1:在立即加载对象(当hibernate在从数据库中取得数据组装好一个对象后
* 会立即再从数据库取得数据此对象所关联的对象)时,如果对象存在,
* load()和get()方法没有区别,都可以取得已初始化的对象;但如果当对
* 象不存在且是立即加载时,使用get()方法则返回null,而使用load()则
* 抛出一个异常。因此使用load()方法时,要确认查询的主键ID一定是存在
* 的,从这一点讲它没有get方便!
* 2:在延迟加载对象(Hibernate从数据库中取得数据组装好一个对象后,
* 不会立即再从数据库取得数据组装此对象所关联的对象,而是等到需要时,
* 都会从数据库取得数据组装此对象关联的对象)时,get()方法仍然使用
* 立即加载的方式发送SQL语句,并得到已初始化的对象,而load()方法则
* 根本不发送SQL语句,它返回一个代理对象,直到这个对象被访问时才被
* 初始化。
路漫漫其修远兮,吾将上下而求索