首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

分析zooma迅捷框架的优点和缺陷

2012-10-27 
分析zooma敏捷框架的优点和缺陷最初想写zooma的原因是因为自己感到对经常性的重复劳动的厌烦,诸如一些po和

分析zooma敏捷框架的优点和缺陷
    最初想写zooma的原因是因为自己感到对经常性的重复劳动的厌烦,诸如一些po和vo的转换,针对不同entity的dao和service的实现,以及基本的action中crud操作,即使对dao和service以及action做了泛型的封装,还是要写不少的重复代码,前台的页面也是要来回的粘贴复制,于是我就有了zooma的原始模型:

    就是通过hibernate的mapping文件自动的生成对entity的包括po,vo,dao,service,action,actionform和前台的页面,一次性生成对该实体的包括c、s两端的基本操作代码,当然包括spring和struts的配置文件的更新,使得我可以把大部分的精力放在对于特定实体的特定逻辑的设计上。

    到zooma0.3版本,以上的模型已经全部实现,使用zooma为基础的山西某煤矿生产调度信息系统也同时完成收尾工作,在开发过程中遇到了zooma的先天缺陷,在后面会给大家介绍,希望使用它的人能够避免犯同样的错误。下面我来分析一下zooma的优点和缺点:

    首先我对后台的代码做了优化,使用泛型对dao,service和action做了基本操作的封装,这样可以看到dao实现的代码如下:

public List findByName(String name){return this.getHibernateTemplate().find("from ZsxResume",name);}

    再比如我想使用其它实体的操作,只要在这个实体中用geter和seter注入就可以使用,当然相应的要在spring的配置文件中加入参数信息。

在action中只实现了单独实体的crud操作,想实现批量操作,可以自己重写insert(),delete(),update()方法,同样也可以通过ioc使用其他实体的crud操作
在查询方面使用hibernate的QBC进行动态混合查询,查询规则在action中的getDetachedCriteria方法中定义,同时将分页封装了进去,可以自己修改org.zooma.base.Page类的toString()方法,来改变翻页显示条。

     页面中尽量将java代码最少化,使得代码看起来更加易懂,所以使用了struts的标签,这里有个缺陷就是页面上按钮使用的js跳转,所以大家可以看到用我提供的模板生成的jsp文件需要使用js,css和images三个文件夹中的文件。

     在WEB-INF\templete下存放的是xml和xsl模板,zooma会先将mapping文件里的信息保存在xml\bean.xml中,然后使用它和xsl文件夹下的模板进行文件生成,一次前台页面的生成样式是完全可以自己定义的,只要按照bean.xml中的数据进行编写就可以了,当然名字还是要叫那个名字。

     zooma的缺陷:

    在项目中我是这样使用zooma的,单表直接只用zooma生成就ok了,多表关联的时候,先建立视图,然后对视图做生成——这里对表和视图有一定的限制,就是一定要以id为主键,并且id在oracle中使用number、在mysql中使用integer,否则会出错误,这个应该算是个缺陷吧——生成的视图用来显示关联后的实体数据,对视图修改的时候,却修改要被修改的被关联的单表,如果说对于比较简单的逻辑关系这样操作还是没有问题的,但是我们在实际项目中遇到的比较复杂的逻辑,使得实现的十分复杂,所以建议对多表关联使用zooma对单边生成后自己修改mapping文件和po、vo,使用hibernate的many-to-many进行操作,这是zooma得最大缺陷,它只能为开发者在比较简单的实体逻辑(一般我会在这样的逻辑中使用zooma:单表,many-to-one,one-to-many)下生成应用,使用它来做一些小型项目我绝得还是会很有益处的。

    还有就是zooma是基于struts1.2的,这令很多网友感到失望,我在演示视频中使用myeclipse进行项目搭建,有让很多人感到绝望,实际上完全可以除了基本架构的搭建,其他操作完全可以不使用myeclipse,但是需要自己手动写mapping文件和po。

    在zooma的下个版本中希望实现:
1、ant的项目导入,摆脱Myeclipse
2、升级为Struts2.0,有可能的话会添加ibates支持
1 楼 jeromelee 2008-03-10   发哥,你帖子上首页啦。恭喜恭喜。我李洋,崔亮的同学。 2 楼 bubble 2008-03-11   jeromelee 写道发哥,你帖子上首页啦。恭喜恭喜。我李洋,崔亮的同学。
呵呵,谢了 3 楼 chenshuangjiang 2008-03-28   我支持一下,其实你说的上述缺点已经不算什么了,毕竟在灵活性上牺牲可以提高工作效率问题。不过你说的引入ANT 来摆脱对 Myeclipse的依赖我很赞同,其实只要按照web规范来就行了。用什么IDE都能导入。我觉得用eclipse的来架构web项目应该比较好而且eclipse毕竟用的人很多。呵呵。最后我想问的是怎么才能更灵活的升级新的框架。我觉现在的构架很多而且对应业务不同用的技术也不同。我建议你在综合几种流行的框架后。做个泛型封装,可以让用户自己来选择。可以生成不同的技术框架。不过想想可能它大了不过我觉得能更好的对技术进行解藕。而且spring技术在这方面也已经做的很好了。最后我支持这个项目能继续下去。希望能大家来一起做这个项目。把找个项目做下去。比较现在做敏捷开发框架很流行,也很有发展。
最后顺便问一下楼主来北京了吧。呵呵那天聚会吃饭啊。哈哈哈哈。一起交流交流。就怕我的技术浅你看不上我。哈哈 4 楼 bubble 2008-04-02   chenshuangjiang 写道我支持一下,其实你说的上述缺点已经不算什么了,毕竟在灵活性上牺牲可以提高工作效率问题。不过你说的引入ANT 来摆脱对 Myeclipse的依赖我很赞同,其实只要按照web规范来就行了。用什么IDE都能导入。我觉得用eclipse的来架构web项目应该比较好而且eclipse毕竟用的人很多。呵呵。最后我想问的是怎么才能更灵活的升级新的框架。我觉现在的构架很多而且对应业务不同用的技术也不同。我建议你在综合几种流行的框架后。做个泛型封装,可以让用户自己来选择。可以生成不同的技术框架。不过想想可能它大了不过我觉得能更好的对技术进行解藕。而且spring技术在这方面也已经做的很好了。最后我支持这个项目能继续下去。希望能大家来一起做这个项目。把找个项目做下去。比较现在做敏捷开发框架很流行,也很有发展。
最后顺便问一下楼主来北京了吧。呵呵那天聚会吃饭啊。哈哈哈哈。一起交流交流。就怕我的技术浅你看不上我。哈哈
呵呵,怎么会呢,有空聚聚,现在上班了,挺忙的,突然节奏太快还是有些不适应啊,这两天放映比较大,头疼的厉害,业余时间相对的少了很多,而且现在的工作跟zooma的思想已经差距很大了,所以新的版本出来可能会非常慢

热点排行