WEB开发网
开发学院WEB开发Jsp struts+newxy,开发效率提高十倍 阅读

struts+newxy,开发效率提高十倍

 2008-01-05 08:28:29 来源:WEB开发网   
核心提示: 在java的web开发领域较麻烦的是数据库操纵,假如有工具能像Delphi开发数据库运用系统那样高效,struts+newxy,开发效率提高十倍,它一定会受到开发者的欢迎,

   在java的web开发领域较麻烦的是数据库操纵,假如有工具能像Delphi开发数据库运用系统那样高效,它一定会受到开发者的欢迎。

   经过五个方面的比较,newxy+struts WEB开发与deiphi桌面开发相比,速度更快,能力更强。 http://blog.csdn.net/nlhlx/archive/2006/06/12/791047.aspx

   newxy是hibernate的替代者,struts+newxy是struts+hibernate的替代方案。

   struts的不足,下面一篇文章有代表性:《Struts的巨大烦恼 真的不适合大系统?》http://dev.csdn.net/develop/article/85/85114.shtm。
主要观点是:
    一、转到展示层时,需要配置forward,每一次转到展示层,相信大多数都是直接转到jsp, 而涉及到转向,需要配置forward,假如有十个展示层的jsp,需要配置十次struts, 而且还不包括有时候目录、文件变更,需要重新修改forward,注重,每次修改配置之后, 要求重新部署整个项目,而tomcate这样的服务器,还必须重新启动服务器,假如业务变更复杂频繁的系统, 这样的操作简单不可想象。现在就是这样,几十上百个人同时在线使用我们的 系统, 大家可以想象一下,我的烦恼有多大。
   二、当页面表单需要自动变化或者频繁变化时。
   对于一个成熟的MIS系统来说,页面表单肯定是不固定的,甚至象有些系统,页面表单是存在数据库中, 需要填写的表单在页面自动生成,比如填写一个人员基本信息,本来只需要填写 姓名、性别、出生年月 三个指标, 而我后来需要增加籍贯这样的指标,我只需要在数据库中添加籍贯这个记录,并在页面就能自动增加籍贯这样的表单。 而 struts在这方面,其优势反而变成了不足,我参考了非常多的人力资源治理系统,这些系统几乎都能够做系统里面就可以控制人员信息的指示, 进行使展示层能随之灵活变化,假如使用了struts,这些灵活性就根本用不上。 同时,假如页面表单频繁变化时,就需要频繁修改formbean对应的方法和属性,而每次修改之后,就要求重新部署,或者重新启动服务器……。
   hibernate的不足,下面是一位网友的看法,具有代表性:
   一、对象与数据库的映射,要害在于对象关系的映射,但是没做到很理想,配置过多,控制复杂, 另外还会出错。其实本质在于对象不够自由。
   二、事务处理。这点上更轻易出问题,相对于各种各样的事务治理器,要兼容是一个大问题, 总归在各种应用服务器上有很多问题。其本质在于创建了一个自我数据存取小环境,必然面临各种兼容问题。
   三、HQL语言。建立对象查询语言,类SQL,但是不同于任何一种SQL,调试环境复杂。本质在于创建了一种语言,增加学习成本。
   这位网友还提出了减化和退化方案。

   struts+newxy之所以在开发效率上比struts+hibernate能提高十倍、甚至几十倍,是因为克服了struts与hiberate的不足。
   利用newxy DAO类,标签, struts+newxy可以在以下几个方面不用写java代码,不用配置struts。 http://blog.csdn.net/nlhlx/archive/2006/06/11/788541.aspx

   1.数据库的增、删、改;
   2.对查询所得数据缓存,指定缓存时长;
   3.数据库字符编码与本地字符编码转换;
   4.文件上传,上传大小控制;
   5.文件下载,下载记数;
   6.图片显示;
   7.数据分页显示;
   8.客户端标记记录集哪条记录被选择;

   因为可以不写java代码,不用建立ActionForm类、Action类,因而不用配置struts,不用重新编译类文件、不用重新打包、不用重启服务器。 可以克服struts的不足。
   在克服hibernate的不足方面,newxy采用“退化”和“进化”并用的方案。
   newxy在进行数据的查询、增、删、改时都会调用一注册方法,根据业务涉及到的数据库相关数据源名和表名进行注册, 注册的目的是要获得表字段对应的java类名,主要害字段名,主要害字段长度等数据,保存在一个单子实例中,以供DAO类调用。 假如已注册不再注册。
   可以对多表查询语句注册,如:“select a.field1,b.field2 from table1 as a,table2 as b where ...";
   可以对跨数据源的查询注册。如:"select a.field1,b.field2 from table1 as a,DB3.dto.table2 as b where ...";
   假如是数据增、删、改,则是对单一表注册;
   由于struts+newxy用即时注册的方法,可以不象hibernate那样用静态文件影射数据库到值对象类。开发者不用配置任何文件。可以使用任意查询语句,克服“对象不够自由”问题。
   hibernate通过配置文件设置表之间的关系,有一定意义,newxy在这方面算是“退化”的,但struts+newxy在处理数据库表之间关系方面是很轻易的。
   在事务处理方面,newxy提供了一事务类net.newxy.dbm.Transaction。它可以将多个数据库的操作放在一个事务中。由于DAO类对数据操作前的注册方法得到的表及其字段各种特性都是与数据库直接相关的,而不是事先用静态文件影射, 因而极少发生错误;开发者可以通过Transaction的方法为不同的数据库设置不同的隔离等级;可以设置操时回滚时间,在设置的时间内事务没有完成,会有一线程进行干预,将事务回滚。
   hibernate的HQL语言是和数据库与对象影射规则相适应的,它没有非凡功能,主要是利用值对象类来查询数据。 newxy也提供了一种查询语言NQL。开发者不需用非凡的语法来构建查询语句。非常轻易理解,不会增加学习成本。


Tags:struts newxy 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接