Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。load()方法可返回实体的代理类实例,而get方法永远直接返回实体类。
解决方案 »
- jsp在内容中使用%参数传递出错
- hibernate初学者 一对一 和 多对一 的区别是什么呀?
- javacore 文件分析求助
- 请大家赶紧帮帮我
- 一个FCKeditor的问题
- 请问一个让我将近一个星期彻夜难眠的问题,小弟不胜感激
- 在struts中,当form的元素不固定时,如何处理?急!!!
- 我想取33到66之间的一个随机数,请问怎么取呀?在线等,比较急!
- 请问j2ee那些api的源代码哪里下载啊?
- 基于J2EE的中间件和WEB SERVICES,我选择哪个?请指教
- Mysql 插入整数问题
- Error 500--Internal Server Error ,各位大侠,一起来帮我看看这个错误的原因?拱手相请,定有回报。
Return the persistent instance of the given entity class with the given identifier, or null if there is no such persistent instance. (If the instance, or a proxy for the instance, is already associated with the session, return that instance or proxy.)
get(),load()或者其他查询方法返回的对象都位于当前session缓存中,检索策略对这些方法的影响也不一样,类级别检索策略 有立即和延迟检索,默认为立即检索,运行时行为只对load()有影响。关联级别有 有立即检索、延迟检索和迫切左外连接检索,多对一和一对一关联默认为外连接检索,一对多和多对多关联为立即检索,运行是行为影响load(),get(),find()
ObjectPojo pojo = (ObjectPojo)sess.get(ObjectPojo.class, id);
ObjectPojo pojo = (ObjectPojo)sess.load(ObjectPojo.class, id);
区别
1、如果找不到符合条件的纪录,get()方法将返回null.而load()将会报出ObjectNotFoundEcception.
2、load()方法可以返回实体的代理类实例,而get()永远只返回实体类.
3、load()方法可以充分利用二级缓存和内部缓存的现有数据,而get()方法只在内部缓存中进行查找,如没有发现对应数据将跳过二级缓存,直接调用SQL完成查找.
load()方法支持延迟加载二个都将查询出来的数据放入cache中去