论坛首页 Java企业应用论坛

代替Hibernate.initialize()的解决方案

浏览 2152 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-31  

使用hibernate的延迟加载 也就是懒加载,势必遇到集合的加载问题

有时候懒加载的集合对象需要initialize()来得到

 

但是使用了hibernate的api

 

本人试想苛求一下,不许用hibernate的api减少侵入性,不使用initialize()如何?

 

这里本人目前找到了一个可行的方案:

 

比如可以对集合对象mySet

 

mySet.iterator();

 

这样的话  代理类在iterator();中会调用一个read()方法 进而初始化了mySet

 

 

目前测试可行,不知道各位高人有其他更好的解决方案吗?

 

欢迎智者指点~

   发表时间:2008-11-02  
楼主这个是1 to N数据加载方式,解决绑定hibernate的问题。
我也很久没玩hibernate了。我记得我当时就是比如这样:user.getBlogs();数据就已经加载了。

但是我有一个比较特殊的延迟加载:
TimePoint{
   OnePointRecord;
   TwoPointRecord;
   ThreePointRecord;
}
TimePoint与其中的三个PointRecord是1 to 1的关系。
但是,我每次只需要2个PointRecord;
比如我需要的数据组合是:OnePointRecord + ThreePointRecord 和 TwoPointRecord + ThreePointRecord。

由于是1 to 1,使用延迟加载就会出现一个性能问题。但是我的数据组合又是不确定的。

现在唯一想到的就是不用延迟加载。反正1 to 1,全查出来了。

因为我希望执行的就是一条SQL语句。
0 请登录后投票
   发表时间:2008-11-02  
哎。突然想到了。
TimePoint建立两个映射。。。
。。。。。突然想起来了。不好意思。不好意思。


---------- Append 2008/11/2 -------------

貌似这样不太好看。
因为我还需要编写两个类。
不知道在查询时如何设置动态加载,也就是一个SQL查出来,1 to 1?
0 请登录后投票
论坛首页 Java企业应用版

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