论坛首页 Java企业应用论坛

提问:如何获取lazy集合

浏览 7074 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-10-10  
User有多个 Address,addresses采用lazy
class User{
    Set addresses = new HashSet(); //Address集合
     ....
}
当读取User实例之后,关闭Session,这时,如果想获取addresses,当然不能采用user.getAddresses()。请问该如何获取addresses?
我在DAO中封装了Hibernate,暂时在UserDAO中增加方法public Set getAddresses(User user);读取addresses,感觉很别扭
   发表时间:2003-10-10  
在相应的session关闭之前初始化集合。
0 请登录后投票
   发表时间:2003-10-11  
那如果我使用lazy方式的话,都必须要将POJO中的集合拷贝到DAO对象中才可以使用吗?如果这样的话,那不是可能要拷贝很多的数据????
0 请登录后投票
   发表时间:2003-10-11  
1,用EAGER_FETCH
在load是就把address取回来了
2,手工初始化address.
引用

那如果我使用lazy方式的话,都必须要将POJO中的集合拷贝到DAO对象中才可以使用吗?如果这样的话,那不是可能要拷贝很多的数据????

为什么要把POJO的数据copy到DAO对象?DAO和POJO的关系可以是聚合关系。
0 请登录后投票
   发表时间: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了。
0 请登录后投票
   发表时间:2003-10-15  
曹晓钢 写道
DAO和POJO的关系可以是聚合关系。


不明白这有什么用,我以前的理解是DAO只是数据的操作者而不是数据的容器,可能真的还是没有理解到位。
0 请登录后投票
   发表时间:2003-10-15  
为什么要session关闭之后再initialize呢?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics