请教一下关于对象组装的问题

我打算开发一个社区,打算用jdbc做,现在有个问题,就是在查询对象list的时候,怎么把这个list中的对象组装成完整的领域对象,查出的list只有id,

我现在的想法是在dao查出来的时候,然后去缓存中遍历,找到了就加载缓存的,没找到就调用dao查出单个对象
第二种就是dao查出的是个代理对象,不过目前感觉有点麻烦。
我看jf中好像是框架给自动完成的,但是我这项目估计不用jf,请bang老大指点指点

2010年02月02日 13:37 "cmzx3444"的内容
dao查出来的时候,然后去缓存中遍历,找到了就加载缓存的,没找到就调用dao查出单个对象

JF也是这么做的,你可以参考JF源码,或者引用JF这部分代码都可以,Apache2.0开源比较宽松。

那要是这个对象比较复杂呢,在我印象中,一个复杂的领域对象需要用build创建的,dao只是查询出数据来,比如说有个 User 对象,他聚合了一个 userSstate,userSstate中有包含有 他回复过多少帖子,创建过多少帖子等信息,那这些仅仅通过dao查出user对象是做不到的啊

2010年02月02日 13:55 "cmzx3444"的内容
一个复杂的领域对象需要用build创建的

参考JiveJdon的Repository包下Build包下Builder模式构建方式。

那我在service层拿到一个空的list(只有id)后,然后遍历每个对象,再通过Builder把他们组装好吗,我现在疑惑的是,这个组装的操作是在哪个层做比较合适呢,还是用代理模式实现呢

2010年02月02日 14:07 "cmzx3444"的内容
组装的操作是在哪个层做比较合适呢

注意区别:按照CQRS命令和查询分离架构,如果你是查询,返回的是集合,那么就应该在专门的查询层。

JiveJdon的Builder是组装一个个单个的领域对象,属于repository层。

你需要集合结果的查询是这样步骤:
1.首先直接通过DAO获得符合条件的数据记录主键集合。
2.然后根据主键从缓存中获得单个领域模型对象,如果没有,则发出命令给repository,从数据库获得单个领域模型对象。

具体可参考JiveJdon源码就可以知道。

谢谢指教,晚上回去实践一下,哈哈