该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-10
这篇文章写得太粗糙,不想浪费大家时间(原帖删),还是看我后来的改进版吧: -----------------------------------------------------------------------
从上面的抽象来看,我所说的架构,也完全可以看成Map输入,Map或List输出,最终的输出就是html页面。 1.1 持久层 * 所有的数据库操作,完全可以抽象为上面的CRUD操作。譬如审批流程的通过和驳回,都是update操作。 1.2 业务层(服务层) 1.3 表示层 以上就是所有的抽象,总结起来,大概就是: 而上面的输入Map和输出Map或List都不用处理,不用Bean to Map,也不用Map to Bean,直来直往就可以了,而且添加、修改map里面信息也很容易。 2、 架构的实现 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-12-10
Ruby是强类型好不好?你不但完全放弃了静态类型,还放弃了强类型。倒真是把Java长项都阉割掉了啊。不男不女的Java能闹腾到哪里去呢?我倒想看看。
|
|
返回顶楼 | |
发表时间:2006-12-10
zwchen 写道 就写到这儿了,忘了说一下,我在该架构下开发一个模块的CRUD操作5个页面,在业务清晰,数据库设计好后,开发不超过一天,工具:eclipse+Dreamweaver。
这叫快速开发???瀑布汗啊 就用最常见的SSH开发这几个页面能超过半天吗? btw:花时间又看了一下楼主的帖子,简直就是$@$%^%$^ |
|
返回顶楼 | |
发表时间:2006-12-10
to taowen:Ruby我刚刚学习不久,如果理解粗浅,请原谅,但Javascript这中弱类型语言应该没错吧。对静态类型和强类型的区别,我一直比较模糊,希望得到你的指点。另外,用Map处理对象这种思想,我应该是受Sun的Petstore启发的,不知道你对它的event有何看法?
to netfishx: 引用 最常见的SSH开发这几个页面能超过半天吗? ,是的,你说得没错,那时因为你对这些东西都很熟练。不过我们必须面对开发完后的变更,特别是项目组新手较多的情况,譬如50%人没有接触Java或是应届生,这才是我现在做的项目最突出的问题。我们项目组有人做了一个自动生成代码工具,但里面的细节,要了解就很困难了,譬如Hibernate的cascade和inverse怎么配置。你不能以你的能力去要求别人,项目中学习成本的问题我必须去面对。 |
|
返回顶楼 | |
发表时间:2006-12-10
一天,呵呵。把时间都浪费到数据库了
|
|
返回顶楼 | |
发表时间:2006-12-10
spartak 写道 一天,呵呵。把时间都浪费到数据库了 我们现在开发的项目,sql一般都比较简单,去让团队新手了解Hibernate生成的sql,那种学习成本太高,时间也不容许,特别是处理关联表的时候。以我若干项目的经历,团队成员花在hibernate上的时间太多,但没有什么实质性的改进,譬如一个lazy loading问题。我们面对的外包领域,这个和一般项目的不同。 |
|
返回顶楼 | |
发表时间:2006-12-10
这样做,不用配置orm映射,前端不用web框架,直接讲request中的参数组成一个map。却是减少了一些工作量,刚开始用这种做法估计也会觉得很快。
楼主的流程应该是这样的: 页面数据 - 收集倒map - dao负责写入数据库 OR 从数据库取出数据映射倒map上。 优点: 1,节省代码和配置文件,比如orm的映射文件和po。(这个确实能减轻不少工作量) 2,开发人员不需要掌握其他的框架技术,比如hibernate,ibatis,ww之类。 缺点: 难维护,因为我在你的action和service里面看到的,所有处理的数据都是map,很难确认这个map具体包含了什么东西,而且在dao层也非产容易出错。比如map包含了用户信息userName->aaa,userPass->bbb,regDate-2003等几个字段,万一我不小心get的时候大小写写错?或者记不清到底map里面包含有那些字段? 如果是明确的po对象,根本不用担心这个问题。 另外,楼主的这个报表项目并不能算一个很好的例子,我也做过类似的项目,报表非常多,但是一般这种报表都是通过存储过程或者sql已经处理好,前端只需要取出数据展示就OK了,基本上没有什么业务逻辑在里面,最多就是权限验证和输入参数的组合。如果稍微复杂一点的逻辑,比如某个业务方法里面,涉及倒多个po,如果这几个全是map对象,god,我想起来就觉得冒冷汗。 |
|
返回顶楼 | |
发表时间:2006-12-10
引用 所有处理的数据都是map,很难确认这个map具体包含了什么东西,而且在dao层也非产容易出错 这个我也有同感,我希望开发人员自己去约束,保证service层测试完全通过。引用 楼主的这个报表项目并不能算一个很好的例子 这确实是一个有点偏颇的例子,不过,报表确实有一些比较复杂的地方,譬如各频道首页的一个内嵌的table报表,报表的每个字段都有链接list页面,如日、周、月、年、走势图,而且list链接并没有什么严格的规律,list链接里面还有detail链接。
|
|
返回顶楼 | |
发表时间:2006-12-10
引用 比如某个业务方法里面,涉及倒多个po,如果这几个全是map对象 ,这个我想把这几个子map字段拿出来,和原来的map同级,表现上不形成Object Graph。我不想一Object为中心,而是plain的table。
|
|
返回顶楼 | |
发表时间:2006-12-10
我所表达的架构,姑且就这么称呼吧,就是foxty所理解的。
我之所以要采取这么很不优雅的方式,是因为我们项目团队新人太多,而且不稳定,项目技术不难,但工期紧。让项目组成员了解所谓的领域模型,并用对象的方式实现,太难。 我只希望项目能构快速实现,并且很容易测试(Service层必须单元测试),而且是项目经理和客户方所最关注的。 我以前也是追求优雅的架构,但我发现,真正面对现实,至少是外包项目的现实,那种架构实现起来耗时、难维护,出错多。 Hibernate这种东西,我用了两年,用好确实还不错,但不能只你会啊?因为我是在一个团队里做,别人不会用的时候,就会从session里面得到connection,然后sql操作,绕开做,你咋办?因为你没法要求他们很快就熟练啊。也许,这和很多人的项目经历不一样。 |
|
返回顶楼 | |