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

主要有以下三项区别:

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

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

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

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

你可能感兴趣的:(Session的load和get方法的区别是什么)