浏览 7074 次
锁定老帖子 主题:提问:如何获取lazy集合
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2003-10-10
class User{ Set addresses = new HashSet(); //Address集合 .... } 当读取User实例之后,关闭Session,这时,如果想获取addresses,当然不能采用user.getAddresses()。请问该如何获取addresses? 我在DAO中封装了Hibernate,暂时在UserDAO中增加方法public Set getAddresses(User user);读取addresses,感觉很别扭 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-10-10
在相应的session关闭之前初始化集合。
|
|
返回顶楼 | |
发表时间:2003-10-11
那如果我使用lazy方式的话,都必须要将POJO中的集合拷贝到DAO对象中才可以使用吗?如果这样的话,那不是可能要拷贝很多的数据????
|
|
返回顶楼 | |
发表时间:2003-10-11
1,用EAGER_FETCH
在load是就把address取回来了 2,手工初始化address. 引用 那如果我使用lazy方式的话,都必须要将POJO中的集合拷贝到DAO对象中才可以使用吗?如果这样的话,那不是可能要拷贝很多的数据???? 为什么要把POJO的数据copy到DAO对象?DAO和POJO的关系可以是聚合关系。 |
|
返回顶楼 | |
发表时间:2003-10-15
deeprising 写道 User有多个 Address,addresses采用lazy
class User{ Set addresses = new HashSet(); //Address集合 .... } 我刚才也碰到了同样的问题。其实很简单,这样就可以了: User user = session.load(...);; //或者先find再遍历得到你需要的那个user Hibernate.initialize(user.getAddresses (););; //把set装进来,这个方法在Hibernate Reference里面有讲 session.close();; return user; 返回以后user.getAddresses()里面已经有实实在在的addresses了。 |
|
返回顶楼 | |
发表时间:2003-10-15
曹晓钢 写道 DAO和POJO的关系可以是聚合关系。
不明白这有什么用,我以前的理解是DAO只是数据的操作者而不是数据的容器,可能真的还是没有理解到位。 |
|
返回顶楼 | |
发表时间:2003-10-15
为什么要session关闭之后再initialize呢?
|
|
返回顶楼 | |