dao层的烦恼

初次发帖,还望各位大侠不吝赐教。

首先自我说明下,由于我也是刚刚接触Java一年,所以高深的东西可能不太了解,希望各位大侠能说的稍微通俗点。我的知识体系:J2SE、HTML、Servlet/JSP、Hibernate、Struts、Spring、AJAX等,我是去年毕业的,论文实现的是一个在线客服的BS的聊天系统。当时做这个的时候根本没考虑什么架构,只是应用自己所学的只是体系完成了即时聊天的功能。

后来自己看了一些设计模式,看的时候挺有想法的,也有那种重生的感觉。当时看banq老师的Jive论坛系统分析设计的时候,感觉人家的想法好牛。可是发现在项目实战的时候,也很想用用设计模式,有点那种为了用设计模式而用设计模式,可是自己发现却不知道该怎么用。不知各位大侠关于设计模式可否给些建议。

好了,言归正传,最近在做一个购物网站的项目。这个项目打算做成一个灵活的项目,就是为了练习j2ee的这些知识体系。

这个项目也是采用MVC的分层模式,使用jsp和tag标记文件作为V层,
而C层可以随意使用,比如使用Servlet,或者Struts;
数据库连接层使用JDBC或者hibernate;
上面提供的方式可以随意组合形成本项目。

可是我的困惑是,在Hibernate中dao层是以表-对象的增删修查操作来定义的,而在页面显示的时候,有时候不仅仅是单单的某个对象的显示,而是需要关联多个表查询后显示数据。
这个时候我是该把这个查询方法放在哪个对象的DAO方法中呢?还是单独写dao类?

可是单独写dao类,又该以什么方式来写?一个用例对应一个dao类?还是别的方式?
如果是放到某个对象的dao方法中,又该放到哪个对象的dao方法中呢?

[该贴被slandi于2009-02-17 19:06修改过]

感谢banq老师的回复!

由于缺乏DDD相关的知识,而且这个项目只能在现有的知识体系上进行,不知该如何做。现在完成项目不是问题,问题是如何做才能更符合面向对象,更易扩展,更灵活?

首先是看,看别人怎么做的,看得多了自然就产生“审美能力”了

如果你的“聊天系统”是“说了就扔”型的,那肯定不需要永久层。

由于这个项目需要这段时间完成,基本没有时间看别人怎么做的,我只能尽力想,尽力的做到是OO的

比如完成DAO层的接口设计,数据库连接池的设计,缓冲的设计、管理等,可是对于组织这些逻辑,或者业务逻辑的编写我感觉自己还是一头雾水,不知道如何更好的组织代码

之前看的设计模式似乎在用的时候全都忘了~呵呵,估计还是使用的比较少把,就可简单的想起工厂模式和单例模式

--如果你的“聊天系统”是“说了就扔”型的,那肯定不需要永久层

之前做得聊天系统是持久到数据库的~
只是之前做得时候没有考虑使用缓冲

现在做的是一个购物网站的系统,像当当网那种的,查询比较多,而且目前只做前台,不知道这些查询该怎么组织,怎么设计dao层