论坛首页 Java版 Struts

关于开发STRUTS+SPRING+Hibernate生成器的提议!

浏览 14710 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2004-09-30
关于开发STRUTS+SPRING+Hibernate生成器的提议:

目标:根据库结构,或自定义的逻辑XML, 生成基础框架性代码.

如果大家都有兴趣,可以做成一个开源项目.代码公开!

如果没有人有兴趣,只好自已做了自已用!


谁有好的建议请回贴!
   
时间:2004-10-08
dhj1 写道
根据库结构,或自定义的逻辑XML, 生成基础框架性代码.


why not generate sql&code from model?
   
0 请登录后投票
时间:2004-10-08
我业余时间做了一个 不是很完善 在 sf上有下载 bigbird

https://sourceforge.net/projects/bigbird/

根据一个配置文件生成 struts 所有的配置文件、类 、 dao 、 service、po 等
   
0 请登录后投票
时间:2004-10-08
我仍然认为,代码生成不是一件好事。如果这些代码已经重复到可以自动生成的程度,干吗不把它们写成同一份代码呢?
   
0 请登录后投票
时间:2004-10-08
这个要具体问题具体分析 不能一概而论 欢迎大家假如我的小组去完善 他
   
0 请登录后投票
时间:2004-10-08
呵呵,这是路线问题。如果对你做法本身就不同意,怎么能够加入你呢?

我也认为,通过自动生成代码简化劳动,来延长“该死的设计”的寿命,不是什么好事,有点“助纣为虐”的味道。
   
0 请登录后投票
时间:2004-10-08
=========〉〉我仍然认为,代码生成不是一件好事。如果这些代码已经重复到可以自动生成的程度,干吗不把它们写成同一份代码呢?



写成同一份代码 ?要是事情有这么简单就好了 可惜现实世界不是嘴上说说而已
   
0 请登录后投票
时间:2004-10-08
wkrain 写道
=========〉〉我仍然认为,代码生成不是一件好事。如果这些代码已经重复到可以自动生成的程度,干吗不把它们写成同一份代码呢?



写成同一份代码 ?要是事情有这么简单就好了 可惜现实世界不是嘴上说说而已


事情肯定不会是这么简单的,不然还要程序员来干什么呢?不过照我的经验来看,大多数时候,在Java 1.0和C++中需要代码生成的情况,在现在的Java和C#里面可以靠动态代理来做到。比如以前涉及到remoting的时候都要生成skeleton和stub(EJB就是这个做法,Visual Studio开发COM也是),但现在一般都会用动态代理(Hessian的做法)。而且这些“需要代码生成的情况”还是在有良好OOD的前提下、由于语言本身的局限造成的,很多时候代码生成甚至是像老庄说的,是“该死的设计”造成的。

你不妨把这个需要代码生成的情景介绍一下,咱们一起看看能不能有更好的设计。
   
0 请登录后投票
时间:2004-10-08
gigix 写道
我仍然认为,代码生成不是一件好事。如果这些代码已经重复到可以自动生成的程度,干吗不把它们写成同一份代码呢?


我说的可能有点MDA,我们现在的工具可以做到从模型生成:
1)OR MAP文件
2)DB SQL(create table, drop table)
3)序列化类的readobject, writeobject等方法
4)属性的get,set方法
5)属性的约束检验(比如字符串字段在数据库中的长度约束)方法

实际上IDE也可以做到其中的一部分。这样的确减少了不少工作量,可以忘掉数据库,不过对建模设计的要求就很高,重构起来是有点恐怖的。
   
0 请登录后投票
时间:2004-10-08
celine 写道

我说的可能有点MDA,我们现在的工具可以做到从模型生成:
1)OR MAP文件
2)DB SQL(create table, drop table)
3)序列化类的readobject, writeobject等方法
4)属性的get,set方法
5)属性的约束检验(比如字符串字段在数据库中的长度约束)方法

实际上IDE也可以做到其中的一部分。这样的确减少了不少工作量,可以忘掉数据库,不过对建模设计的要求就很高,重构起来是有点恐怖的。


1、2、3是O/R mapping工具的题中应有之义。当Java支持metadata annotation之后,像Hibernate 3、JDO 2之类的ORM都会提供“根据class定义和metadata生成数据库结构”的功能(即你说的功能2,而功能1是不再需要的)。功能3实际上是一个database gateway(我有没有记错这个模式名?),说白了就是Hibernate的Session和EJB 3的PersistenceManager。功能5同样可以在persistence object的metadata中做到。至于功能4,根据member field生成getter/setter,这就见仁见智了。

这里的关键是,如果你利用class metadata和generic template来处理各各不同、又彼此相似的情况,你得到的是一份(仅仅一份)代码。如果用代码生成的办法,你将不得不维护多份代码,至少是在deploy之前需要一个重新生成的步骤(就像我们现在用xDoclet生成Hibernate映射描述符那样)。一件事只应该说一次,不应该变着各种形式说N次,哪怕是自动的。
   
0 请登录后投票
论坛首页 Java版 Struts

跳转论坛:
JavaEye推荐