发帖    主题    评论    推荐    标签    作者    订阅    查搜    注册   登陆   关注
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 大数据 扩展性 并发编程 事件驱动 分布式 SOA

Hibernate的fetch问题,都琢磨一晚上了

    
2007-05-13 23:30
赞助商链接

xml里lazy设置true,java里这么写:


result = s.createCriteria(JtsUser.class)
.setFetchMode("jtsHistories", FetchMode.JOIN)
.add(Restrictions.idEq(2))
.list();

此时result.size为4,但xml里lazy设置false,java里这么写

result = s.createCriteria(JtsUser.class)
.add(Restrictions.idEq(2))
.list();

result.size就为1了,按理说两种写发是等价的.
附:JtsUser包含jtsHistories,idEq(2)的JtsUser对应4个jtsHistory记录

2007-05-14 09:34

lazy懒加载是Hibernate最重要功能之一,怎么能说前后写法是等价的,建议好好研究lazy设置为true和false涉及的一系列重要区别。

2007-05-14 15:04

lazy=true之后设置.setFetchMode("jtsHistories", FetchMode.JOIN)不就是把对象fetch出来了吗,也不就是等价于lazy=false了吗?两种写法都可以把子对象fetch出来,可是我不明白为什么结果list长度不一样,说的不对的地方还请指教

2007-05-15 14:20

lazy=true以后,一个对象下的List就可能一次性全部取出,而设置false,则不是一次性取出,List实际是一个代理对象,只有外界访问这个List是,Hibernate才真正访问数据库

hibernate     

赞助商链接

赞助商链接

返回顶部

移动版 关于本站 使用帮助 联系管理员 最佳分辨率1366x768
OpenSource JIVEJDON Powered by JdonFramework Code © 2002-20 jdon.com