vickzhu

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  151 随笔 :: 0 文章 :: 34 评论 :: 0 Trackbacks
1,load()方法从来就是假定数据在数据库中是存在的,在使用时如果不存在则会抛出ObjectNotFoundException;而get()方法不会假定数据在数据库中存在,如果不存在则返回null
2,load()方法返回的是实体类的代理类,因此load()可以使用延迟加载策略来加载对象
      get()方法返回的不一定是实体类,可能是代理类,因为get()方法如果在session缓存(一级缓存)中找到了该id对应的对象,如果刚好该对象前面是被代理过的,如被load方法使用过,或者被其他关联对象延迟加载过,那么返回的还是原先的代理对象,而不是实体类对象。
3,load()方法查询数据时会先从session缓存(一级缓存)中查找,如果没有找到则会创建代理类,该代理类仅仅初始化了OID属性,当第一次访问其他属性值时,则会依次从二级缓存-->数据库查找,直到找到数据,最后将所有属性值赋给代理类。而get()方法则会直接按照一级缓存-->二级缓存-->数据库的顺序查找。

看到网上的全都是复制的,而且错误不少,怎么就没有人修正一下呢?
posted on 2009-01-22 10:29 筱 筱 阅读(472) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: