Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4182971
  • 博文数量: 291
  • 博客积分: 8003
  • 博客等级: 大校
  • 技术积分: 4275
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-30 18:28
文章分类

全部博文(291)

文章存档

2017年(1)

2013年(47)

2012年(115)

2011年(121)

2010年(7)

分类: 系统运维

2012-05-01 15:30:31

我标题里的21天只是模仿《21xxx入门》定的,有可能不用21天。

从去年9月到现在,我到新公司已经大半年了,和原来的公司环境不一样,原来的公司是一个技术型公司,我做的研发基本上是公司CDN内部应用程序居多。而新公司是一个网络互动广告公司,主要是做活动网站或者客户官网开发维护,由于项目非常多,网站问题和新功能很多,每天从早忙到晚。

由于公司以网站开发为主,特别是活动网站很多,因此需要快速开发,对于静态内容我们公司使用Opencms进行开发非常方便,基本上半周或者一周一个活动网站。但是对于一些动态开发,用Opencms比较麻烦,Opencms不能调试,估计直接用SSH框架都比用它要快。

鉴于Opencms的种种缺陷,我就想起以前在上一家公司的经理提到,他以前做开发是用代码来写代码,也就是开发之前先做一个代码生成工具来把重复性的代码生成出来。

我并没有动手做,因为我知道这样的代码生成工具,在开源网站上肯定有

1)         Grails

Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于SpringHibernate和其它标准Java框架之上,从而为大家带来一套能实现超高生产力的一站式框架。

我用过它做过开发项目,开发时,首先定义一个个domain(相当于数据库里的表),然后定义各个domain的关联关系(一对一,一对多,多对多)domaindomain之间的表现用图形化显示很像数据库设计工具的外键关系图,然后通过命令行生成CRUD,语法里兼容java

我没有用它的原因:

Ø  我的习惯是以数据库为中心,应该先设计好数据库,根据数据库生成代码。而grails,在定义好domain时,就会自动在数据库里建立表;

Ø  而且各个表的关系只能通过domain进行控制,而且各个表里会附加一些字段例如version

Ø  而且生成的CRUD是通过Hibernate操作数据库,我不喜欢Hibernate,因为对于复杂的表关系的操作Hibernate太麻烦而且效率低,我更喜欢jdbc那样简单可控;

 

2)         J-HI

J-HI是一款JAVA WEB应用软件快速开发开源平台,主要服务于软件企业和传统行业企事业单位信息中心的开发人员,为他们提供一套完整的一站式的JAVA WEB应用软件快速开发解决方案。

这个框架我用过,而且去参加J-HI项目开发公司的 CTO的介绍(好像是51CTO还是CSDN的技术研讨会)J-HIGrails在原理上很类似,J-HI v1.0目前支持生成spring+jdbcSSHJ-HI本身是一个eclipse插件(),我在去听演讲之前,就下载进行试用(他们把eclipse改造为J-HI的开发工具,下载下来),安装比较简单,很容易就生成了一个我比较喜欢的spring+jdbc,这个比Grails更好用,能够生成简单界面和复杂界面两种。而且各种类型在生成的界面上的输入方式有所不同。

我没有用它的原因:

Ø  J-HIGrails一样以Model为中心,自己建表;

Ø  对数据库操作自己封装到一个jar包,有学习成本,我学了一天没搞明白如何很容易修改生成出来的代码,而且对于那个jar包里的代码可靠性有待考证;

 

3)         rapid-framework

rapid-generator是一个生成器引擎,让你可以专注与代码生成器模板的编写, 可以生成如ibatis,ibatis3,hibernate,spring_mvc,struts2等等代码.

我没有用它的原因:

Ø  rapid-framework和前面J-HIGrails一样以Model为中心,只不过是把表建立在xml文件中;

 

我在找代码生成工具的过程中,总结了我心中的代码生成工具

1)         以数据库为中心,这个首先是我的习惯,我习惯于先设计好数据库,再做coding,设计数据库的同时更好的理解需求,有不明白的可以及时修改,最后出来的数据库设计是符合需求的。

而以model为中心,则是先coding,再设计,有点违反了软件工程过程,而且若是需求变动或者错误,则需要修改代码。

2)         数据库可控,最好是能够直接修改SQL语句,这样对于复杂的表关系可以很快定位,对于需要提供效率可以很容易修改,这就是我一直没有用Hibernate的原因了。

3)         和语言无关,这个代码生成工具可以是java,或者php写的,但是生成出来的代码可以是java,php,或者C#,或者是其他语言。对于这个,若是以Model为中心的话,就无法做到这一点。这个也决定了必须以数据库为中心。

4)         基于第3点,这个工具应该是支持多套模版,支持自定义模版。

由于没有找到合适的代码生成工具,于是乎,我需要亲自动手写了。我计划先开发代码生成工具框架,同时做一套java的模版,再然后做一套php的模版。

阅读(1769) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~