对论坛代码的一点疑问
最近研究 论坛的代码,说一下我的理解,以及疑问,就以MessageListAction 为入口
MessageListAction 中有个方法 getPageIterator是通过forumMessageQueryService的getMessages(new Long(threadId), start, count) 方法得到一个PageIterator的
再看forumMessageQueryService中的实现 发现getMessages是messageQueryDao的getMessages(threadId, start, count)方法干的,再去看看dao中的getMessages方法,他是通过 pageIteratorSolver.getPageIterator(GET_ALL_ITEMS_ALLCOUNT, GET_ALL_ITEMS, params, start, count)这个方法返回的。pageIteratorSolver像是个jdbc的模板类,getPageIterator返回的PageIterator对象好像是只有实体ID的list
我现在 的问题是 1,PageIterator中的实体Id是在哪里被组装成完整对象的,按理说应该是用Builder装配的啊,但我怎么都没找到具体的代码啊,
2,dao查询出来的都是Id的集合,然后组装成一个完整的聚合对象,那缓存的更新该怎么实现,比如有个Messages被删除或修改,Messages的所有缓存都删除吗,还是说同步刚刚修改的缓存?然后清除查询出Messages 的id集合的那个缓存,如果一有Messages的改动就全部删除Messages的缓存我感觉太浪费了,如果Messages缓存很大的话那就更难以接受了。
这两问题可能有点傻,不过一直困扰着我