Session的load和get方法区别是什么?

①如果没有找到符合条件的记录,get方法返回null值,而load方法会抛出异常;

②get方法直接返回实体类对象,load方法返回实体类对象的代理;

③在Hibernate3之前,get方法只在一级缓存(内部缓存)中进行数据查找,如果没有找到对应的数据则越过二级缓存,直接发出SQL语句完成数据的读取;load方法则可以充分利用二级缓存中现有数据,进行延迟加载。当然从Hibernate3开始,get方法不再是对二级缓存只写不读,它也是可以访问二级缓存的;

简单的是,对于load()方法,hibernate认为该数据在数据库中一定存在,可以放心的使用代理来实现延迟加载,如果没有数据,就会抛出异常,而通过get()方法去取数据,是可以不存在的。

公众号:神经病集散中心
原文地址:https://www.cnblogs.com/Yanss/p/11726555.html