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居然把你这条搜索结果放在第一位,这样是会误导人的!