知识大全 struts+newxy,开发效率提高十倍

Posted 数据库

篇首语:我自横刀向天笑,去留肝胆两昆仑。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 struts+newxy,开发效率提高十倍相关的知识,希望对你有一定的参考价值。

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

  经过五个方面的比较 newxy+struts WEB开发与deiphi桌面开发相比 速度更快 能力更强

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

  struts的不足 下面一篇文章有代表性 《Struts的巨大烦恼 真的不适合大系统?》 主要观点是      一 转到展示层时 需要配置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

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

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

  struts一旦与newxy结合到一起运用是如此简单 下列是struts+newxy代替struts+hibernate的例子

  struts配置中 formBean的type是 net newxy struts_faces DynaFormBean 开发者不需另外设计ActionForm类 如             <form bean name= myFormBean type= net newxy struts_faces DynaFormBean />

  用户从页面表单submit数据后 在Action类的方法中 开发者可以用DynaFormBean代替struts ActionForm 用DynaDto代替hibernate 对象类         public ActionForward methodName(ActionMapping actionMapping ActionForm actionForm                               HttpServletRequest ServletRequest             HttpServletResponse ServletResponse) throws Exception                        DynaFormBean form=(DynaFormBean)actionForm;            DynaDto dto=(DynaDto)form getDto();            dto set_table( table );//如果用户页面没有传来数据库表名             try                IFacade ifacade=IFacadeFactory getFacade(( _dao )                       ());  //绝大多数情况是 IFacade ifacade=IFacadeFactory getFacade();

  //更新或插入 如果result==null 为update 否则为insert                 result = ifacade update(dto);//或 FormBeanUtils update(ifacade form);

  //删除记录                ifacade remove(dto);//或:FormBeanUtils remove(ifacade form);

  //数据查询 如果上传了符合newxy多项查询规则的数据 查询记录集放在newForm 的_coll属性中                 DynaFormBean newForm=new DynaFormBean();                FormBeanUtils createForm(newForm ServletRequest);                                //开发者如果想知道生成的sql语句 可以这样                 //string sql=form get_sql();                //由于开发者在对数据进行操作时完全不需知道sql语句 所以没有提供方法让开发者直接得到sql语句来控制数据操作                 //未来版本可能提供这样的方法             catch(Exception e)                                            如果使用newxy的标签可以不建立Action类 不设置struts的formBean及action 可以不写代码    

cha138/Article/program/Java/ky/201311/28506

相关参考

知识大全 VS中的Code Snippet来提高开发效率

VS中的CodeSnippet来提高开发效率  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  环境

知识大全 善用VS中的Code Snippet来提高开发效率

善用VS中的CodeSnippet来提高开发效率  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Struts开发工作流程

Struts开发工作流程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最近讲了struts写点

知识大全 用Struts框架开发Java应用

用Struts框架开发Java应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts开

知识大全 Struts开发问题集锦

Struts开发问题集锦  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Couldnotload

知识大全 用MyEclipse开发第一个Struts程序

Struts1.x系列教程(1):用MyEclipse开发第一个Struts程序  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容

知识大全 Struts 2的开发规范与技巧[1]

Struts2的开发规范与技巧[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts

知识大全 Struts为程序开发带来的好处

Struts为程序开发带来的好处  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Struts是对

知识大全 Struts 开发的最佳实践

Struts开发的最佳实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  本文向您讲解了如何使用

知识大全 MyEclipse+struts+Hibernate配置开发手册

MyEclipse+struts+Hibernate配置开发手册  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起