[难题]请教数据懒加载的具体实现技术

sharedata 2003-11-27 09:59:03
对于数据的懒加载,在某些对象关系条件下、大数据量情况下对性能是有影响的。那么,懒加载的根本思路就是“数据在需要的时候才进行加载”。我希望在我的 Brave 系统里面支持数据的懒加载。原来的考虑是不完整的和不好的,我的思路如下:
在数据值对象中,对于关系属性(通常是集合类型)的 get 方法,在调用该方法的时候作判断:如果关系数据没有初始化,那么就调用相关的数据加载方法加载她(通常是通过DAO)。但这里有几个严重的问题:
1:数据值对象通常是简单的对象,调用数据访问方法破坏了她的简单性,虽然是以“客户程序员看不到”的方式进行的;
2:数据值对象通常是需要网络传输的,也就是通常是需要序列化的,那么数据访问方法的引入,增加了需要序列化的工作,同时,这些东西是不必要的。
所以,这种做法是否定了的。目前的做法(想法)是考虑关系,但是关系数据不进行预先载入,也不是系统机制自动完成的,而是客户程序员调用相关的方法自己完成的,也就是,对于存在复杂关系的对象的值的载入可能是多个步骤的,而这些步骤可能来自不同的对象不同的方法。

更好的,我可能是希望是系统自动化完成的,也就是我最初的想法是系统自动的完成的。但是,我的水平还不够,我不会 对象方法的拦截和自动化的载入(动态的或者静态的,但这些概念不是很清楚,涉及到了AOP等吧??)。这些技术可能涉及到动态代理的实现,但是,我没有做过对于产品不是好的选择,也稍微破坏了系统简洁的定位,所以希望大家给我一些意见和看法。

QQ:9818376
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiujf2 2003-12-25
  • 打赏
  • 举报
回复
自己写可能会有点难度, 我知道的ORM的工具, 提供这样的功能, Hibernate就是这样一个好动动, 你可以设置数据对象如何被取出, 可以有级联和关联等.
sharedata 2003-12-25
  • 打赏
  • 举报
回复
基本上都没有说到点子上来。继续看看还有人关注这个问题么?
iamwls 2003-12-06
  • 打赏
  • 举报
回复
sign
Alex_20 2003-12-01
  • 打赏
  • 举报
回复
用SUN的CachedRowSet
sharedata 2003-11-28
  • 打赏
  • 举报
回复
miwoo(miwoo) ( ) 你说道:
----------------------------------------------
动态实现接口可以用java.lang.reflect.Proxy,
动态继承我知道的有cglib,
AOP嘛,可以看看aspectj,不难的
----------------------------------------------

既然如此,还请多费心指点一下 怎么实现数据的懒加载 ?
asdmonster 2003-11-28
  • 打赏
  • 举报
回复
友情up,
看了半天就是没有看懂。
miwoo 2003-11-28
  • 打赏
  • 举报
回复
动态实现接口可以用java.lang.reflect.Proxy,
动态继承我知道的有cglib,
AOP嘛,可以看看aspectj,不难的

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧