hibernate load and get

来源:互联网 发布:安全网络征文大赛 编辑:程序博客网 时间:2024/05/21 10:41
1、找不到符合条件的数据,get()方法将返回null。load()将会报出ObjectNotFoundEcception。

2、get()方法直接返回实体类。load()方法可以返回实体的代理类实例。

3、get()方法只在内部缓存中进行查找。load()方法可以利用二级缓存和内部缓存的现有数据。

4、get方式马上发出sql。load在默认情况下支持延迟加载(lazy)。


l:load方法(顾名思义,load的意思是‘加载’)它会搜索二级的缓存的,充分地利用二级缓存,绝对不会用sql去数据库查询,会返回一个实体代理对象(当前这个对象可以自动转化为实体对象),但当代理对象被调用时,如果没有数据不存在,就会抛出个org.hibernate.ObjectNotFoundException异常。。。  
2:get方法(顾名思义,get的意思是‘获取’),它去会搜索session缓存,如果发现存在,即从缓存中取出,并加载到缓存中;否则用sql去数据库中查询,如果数据库中都没有查到,返回null,不会抛出任何异常。  
综述:很明显方法的意义不同,使用该方法的动机是:在缓存中找不到数据时,你是否希望到数据库中查询。从这个动机来说,只要是考虑尽量减少对数据库不必要的查询。。。