读书人

session 对象load()跟get()的区别

发布时间: 2012-11-19 10:18:51 作者: rapoo

session 对象load()和get()的区别
load()和get()方法的区别:
*记录不存在时。get()返回null,而load()则抛出异常。
*load()可以返回代理类实例,而get()则永远直接返回实体类。
*load()可利用一、二级缓存,而get()则仅仅在一级缓存中查找,若找不到相对应的数据,则直接执行SQL语句。 1 楼 marlonyao 2010-03-19 不知道你是从哪里看的?

第三条完全错误,get会找二级缓存。

第二条也是错的,如果session已经存在代理类,也会返回代理类。 2 楼 marlonyao 2010-03-19 另外对一条:
Item item = (Item)session.load(Item.class, 5L);
假设id为5的item不存在,这时不会抛异常,而是返回一个代理的对象。调用item.getId()也不会抛,访问其它属性的时候,例如item.getContent()才会去访问数据库,发现记录不存在,才会抛异常。
3 楼 marlonyao 2010-03-19 marlonyao 写道

第二条也是错的,如果session已经存在代理类,也会返回代理类。


第二条也是错的,如果session已经存在代理类,get()也会返回代理类。

google和javaeye居然把你这条搜索结果放在第一位,这样是会误导人的!

读书人网 >软件架构设计

热点推荐