锁定老帖子 主题:来自保皇派的意见
该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-01-21
以前我们项目也是将事务加在了action层。确实方便,但是效果不好
|
|
返回顶楼 | |
发表时间:2010-01-21
注意,我这里列出来的只是有些朋友认为不合适的。我此处做一些解释,以免一遍又一遍的解释。对于这个东西我不想用framework来形容,也不想过多的介绍,所谓的实践性的东西当然必须看到代码才能够知道如何,必须实际的体验才能够了解是否可用。这也是我后来贴上代码截图的原因。
|
|
返回顶楼 | |
发表时间:2010-01-21
fireflyc 写道 看到过太多的框架了,几乎每天我都能看到javaeye上有人说自己的框架的事情。有些框架甚至完全号称要推翻SSH的技术栈,重写一个自己的世界。这里我不是想阻止大家做什么,而是来发表一下自己的反面意见,一个保皇派的意见。
我曾经也非常疯狂的山寨过各种框架,我甚至预言SSH技术栈已经腐朽不堪一钱不值了,从mvc到aop,ioc,orm,我山寨过一系列的东西。最后我都是放弃了,理由很简单,最后我发现自己的东西越来越“像什么”,对没错。我已经没有了自己的创新而是在拼命的东拼西凑的堆积各种特性,不是一个特性的有机整合使用而是特性的大走秀。最后自然就没有那份心思做下去了。 后来当我冷静之后仔细想想,我重新定位了自己是在做什么。我在做什么?我为什么要做这些呢?答案我找到了,我是想找到一个好用的工具,用这个工具来减轻自己的负担,仅此而已。既然如此那么我用什么手段又如何呢?我为什么要重写那些东西呢?它们真的不可救药了吗? 我仔细研读了它们的代码之后对他们的作者只有赞叹了,而且他们的代码质量确实在不断地提升。既然如此我为什么不能借用这些代码来达到“自己省力”的目的呢?于是我开始收集各种好的实践,开始修改这些代码。它就形成了现在的ares,历经多次重写,多次整合。在多个项目中实际应用,终于我有勇气拿出来了。 项目站点 http://code.google.com/p/ares-project 下载 http://ares-project.googlecode.com/files/ares-1.0-ga.zip 在压缩包中有演示demo,只需要把hibernate.properties中的 hibernate.hbm2ddl.auto=validate 换成 hibernate.hbm2ddl.auto=update 就会自动帮你新建数据库了。当然别忘记修改用户名密码。 现在我要历数它的几大罪状,这些罪状会让一些人坐立不安和我争辩个面红耳赤。当然我只能说明自己的理由而不能说服你。 1. 取消DAO。 反对声音:违反分层,程序结构不明显等等 理由:通过统计我发现基本上所有的dao都是负责拼接SQL语句或者hql语句,基本上代码都是千篇一律的。所以有理由抽象出一个泛型DAO,提供通用dao方法来代替所有的dao对象。 2.事务加在action上 反对声音:绝对大逆不道,违反MVC分层,service层无法独立。 理由:说违反MVC分层我觉得这种说法的人首先不明白MVC,MVC指的是对web请求的一种处理方式,不是struts是v,spring是c hibernate是m,这种说法绝对是一种无稽之谈一种根本不懂MVC的无稽之谈。这种无稽之谈居然还出现在某些流行的书上。把事务加在service的理由是为了独立UI表现,以后甚至可以让桌面UI来调用这些service方法。但是实际情况往往不是这样,经常可以看到在action中有两个甚至三个service层的调用方法,归结原因是由于程序员在赶时间。如果还固守那老一套那么事务根本不在控制范围之内。action为什么不能加事务?找来找去找不到理由,通过阅读一些成熟的开源项目我更加坚定这种做法。这样做没错。百利而无一害。 上面两点是朋友提的最为“痛恨”的两点。当然还会有一些我等着大家继续拍板。 由于想赶在年前发布,时间仓促文档尚未整理完备。当然我更希望这些事情是由社区来做。呵呵。 备注: ares是古希腊语,战神的意思。战神在神话中是宙斯与赫拉的儿子。他司职战争,形象英俊,性格强暴好斗,十分喜欢打仗,而且勇猛顽强,是力量与权力的象征,好斗与屠杀的战神。但他同时是嗜杀、血腥,人类灾祸的化身。 我取名战神是希望它能够不像以前一样夭折,而是越战越勇,去嗜血,去吸纳各种最佳实践。由于他是宙斯的儿子也意味着它是“继承”而不是“重写”。 看了第二点,有点明白为什么LZ山寨是没有意义的了 |
|
返回顶楼 | |
发表时间:2010-01-21
没有看代码,不过想知道lz对下面问题是怎么解决的。
Action上加事物,如何进行测试业务逻辑?在web层会出现责任的混淆,每个类应该具有一个独立的清晰的责任。如果这样,action就有了两种不同的责任?业务对象会不会有serlet API的耦合? |
|
返回顶楼 | |
发表时间:2010-01-21
你的action代码太不清爽了,完全走了struts的老路,可以考虑再改进一下。另外关于事务加在action上很不好,并不是所有方法都需要事务的,一旦遇到长事务你就哭死了。
|
|
返回顶楼 | |
发表时间:2010-01-21
archerfrank 写道 没有看代码,不过想知道lz对下面问题是怎么解决的。 Action上加事物,如何进行测试业务逻辑?在web层会出现责任的混淆,每个类应该具有一个独立的清晰的责任。如果这样,action就有了两种不同的责任?业务对象会不会有serlet API的耦合? 呵呵,所以我把action都去了。 |
|
返回顶楼 | |
发表时间:2010-01-21
把别人的框架挤走。。然后推销自己的框架》?
|
|
返回顶楼 | |
发表时间:2010-01-21
我一看..30多MB..直接放弃
|
|
返回顶楼 | |
发表时间:2010-01-21
楼主这个编辑器的字体挺好看的,是什么字体?
|
|
返回顶楼 | |
发表时间:2010-01-21
fireflyc 写道 我曾经也非常疯狂的山寨过各种框架,我甚至预言SSH技术栈已经腐朽不堪一钱不值了,从mvc到aop,ioc,orm,我山寨过一系列的东西。最后我都是放弃了,理由很简单,最后我发现自己的东西越来越“像什么”,对没错。我已经没有了自己的创新而是在拼命的东拼西凑的堆积各种特性,不是一个特性的有机整合使用而是特性的大走秀。最后自然就没有那份心思做下去了。
我不觉得框架这个东西是限制我们编程的框子,我的理想代码是“硬件式的可插拔”。 |
|
返回顶楼 | |