Hibernate中get与load的区别.? Hibernate中的get与load有什么区别>?getHibernateTemplate().get(User.class,id);this.getHibernateTemplate().load(Organization.class, parentId));请问这两者间到底有什么区别,区别在哪里,请详细说清楚,谢谢大家.!此题为我面试中所问到的题目! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、找不到符合条件的数据,get()方法将返回null。load()将会报出ObjectNotFoundEcception。2、get()方法直接返回实体类。load()方法可以返回实体的代理类实例。3、get()方法只在内部缓存中进行查找。load()方法可以利用二级缓存和内部缓存的现有数据。4、get方式马上发出sql。load在默认情况下支持延迟加载(lazy)。 get找不到返回null 至少不会报错而load找不到就会出现异常 还要抓异常 l:load方法(顾名思义,load的意思是‘加载’)它会搜索二级的缓存的,充分地利用二级缓存,绝对不会用sql去数据库查询,会返回一个实体代理对象(当前这个对象可以自动转化为实体对象),但当代理对象被调用时,如果没有数据不存在,就会抛出个org.hibernate.ObjectNotFoundException异常 2:get方法(顾名思义,get的意思是‘获取’),它去会搜索session缓存,如果发现存在,即从缓存中取出,并加载到缓存中;否则用sql去数据库中查询,如果数据库中都没有查到,返回null,不会抛出任何异常。 综述:很明显方法的意义不同,使用该方法的动机是:在缓存中找不到数据时,你是否希望到数据库中查询。从这个动机来说,只要是考虑尽量减少对数据库不必要的查询 java技术群:69705156欢迎加入 一般多采用load 因为可以报错 马上查处问题所在 还可以支持缓存 呵呵 get()好像也可以实现在二级缓存查找现有的数据!!! get 查询空值 返回NULLLOAD 查询空值 报异常 这两个方法都是根据标识属性的值来加载持久化对象,get方法加载的是实例默认为即时加载,load默认加载的是代理对象,默认为延迟加载。 最大的区别: 1>load先到缓存中去查,如果没有则返回一个代理对象(不马上到DB中去找),等 后面 使用这个代理对象操作的时候,才到DB中。如还没有找到return Exception 2>get先到缓存中去查,如果没有就到DB中去查,还没有的话return null 总之,如果你确定DB中有这个对象就用load(),不确定就用get()(这样效率高) jbpm3流程上传问题 SSH运行异常 路过的朋友 帮忙 解说 ssh2整合要注意那几点 不太会用radio传值,大家帮忙看看呀~ javascript对层的控制 Tomcat与SQLServer的JDBC连接问题 EJB中Java:comp是什么意思? 如何在bmp管理的ejb中查找数据库? 想请问一下JAVA和JSP、、、、、、 我用的weblogic7.0,用http://127.0.0.1:7001访问正常,用我机器的ip地址(http://10.11.23.104:7001)访问的时候就访问不到。 求助:一个java项目同时连接两个数据库 glassfish不能用.......
2:get方法(顾名思义,get的意思是‘获取’),它去会搜索session缓存,如果发现存在,即从缓存中取出,并加载到缓存中;否则用sql去数据库中查询,如果数据库中都没有查到,返回null,不会抛出任何异常。
综述:很明显方法的意义不同,使用该方法的动机是:在缓存中找不到数据时,你是否希望到数据库中查询。从这个动机来说,只要是考虑尽量减少对数据库不必要的查询
欢迎加入
get()好像也可以实现在二级缓存查找现有的数据!!!
1>load先到缓存中去查,如果没有则返回一个代理对象(不马上到DB中去找),等 后面
使用这个代理对象操作的时候,才到DB中。如还没有找到return Exception
2>get先到缓存中去查,如果没有就到DB中去查,还没有的话return null
总之,如果你确定DB中有这个对象就用load(),不确定就用get()(这样效率高)