to zhangkai: 最近做了一项目,是基于j2ee的,web层采用struts,中间层采用session bean实现业务逻辑,用entity bean和dao模式实现数据的访问。中间层与web层采用valueobject进行业务数据的传送,在web层用formbean包装数据,并在jsp中显示。象这种结构的系统,当业务改变时,有时上述涉及的东西都要改动,这种编码维护的费用太高了。ejb规范说,ejb适合业务需求易变的系统,但我看来当改变一表结构,光entity就要改变描述符,接口文件,实现文件,还不如直接用sql语句,你能解释应该怎么做吗??
NEC的一套系统很能体现这个东西,前段时间用过,感觉能做到业务改变的时候代码改动最小。
最近做了一项目,是基于j2ee的,web层采用struts,中间层采用session bean实现业务逻辑,用entity bean和dao模式实现数据的访问。中间层与web层采用valueobject进行业务数据的传送,在web层用formbean包装数据,并在jsp中显示。象这种结构的系统,当业务改变时,有时上述涉及的东西都要改动,这种编码维护的费用太高了。ejb规范说,ejb适合业务需求易变的系统,但我看来当改变一表结构,光entity就要改变描述符,接口文件,实现文件,还不如直接用sql语句,你能解释应该怎么做吗??
采用mvc结构的时候,把业务都封装在moderl中,其实也就是用普通类吧。
m:封装业务功能。甚至可以包含在叶面显示中的那些如text等的名字命名。再moderl中调用EJB,在EJB中只做数据库的提取,删除等纯数据库动作。而且在数据提取的时候最好把表的一行纪录对应用一个结构体(在java中实际上就是用类了)。这样,数据库提取得到的数据都对应到结构体中,把每一行纪录(实际上就是每一结构体)添加到一如List类此的炼表中。这样,ejb取到的数据返回的都是list,list中的数据又是表的列属性对应的数据。所以在ejb中基本上在用户修改任何需求都不会影响到ejb.除非要修改表结构。
v:jsp
显示,其页面显示的内容都可以从moderl中取到。最好的是连显示的text等类此的名字都从moderl取到(这样做到如果是从头做起是要付出代价的,最好的是开发些通用类,封装好这些基本的功能。nec的WAtool就是提供了这些,其实也可自己开发,不会太难)。
c:servlet.
由servlet控制导向问题,如果设计的好,可以做到在servlet中尽量少的代码,基本上只做页面导向而已。以上只是抛一块石头,忘能引出点玉来!