范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

独立开发者的低代码建立自己的JAVA程序框架

  如果你长期从事信息管理系统的独立开发,可能会发现客户的需求大多以增删改查为主,除了数据表的内容不同以外其他基本相同,将共性代码封装到框架肯定能减少重复劳动;浏览器端代码和服务器端代码交织,调式不便,效率低下,通过将浏览器端的常用组件封装为JAVA对象,做到大部份需求仅仅靠写JAVA代码就能满足,降低调式难度,提高开发效率。
  一、独立开发者不采用流行框架的原因
  JAVA程序开发框架可以降低JAVA程序开发难度,这是程序开发界的共识,因此,Hibernate、Strus、Spring等各种框架十分流行。但这些框架主要是为分工很细的大公司考虑,在灵活性、可扩展性方面考虑很多,对独立开发者来说太繁杂了。我用JAVA编写程序已有3年,但仍然没有使用这些框架,原因之一就是这些框架绕的弯太多,让人觉得头晕。
  Hibernate是一个开源的JAVA数据库访问框架,其操作一个数据表的步骤分为5步:一是建立与数据库表中一行数据对应的JAVA Bean形式的持久化对象类(称为POJO);二是建立描述持久化对象和数据表之间映射关系的Hibernate配置文件;三是设置Hibernate本身的配置文件;四是根据配置文件初始化Hibernate会话的工厂类,进而得到Hibernate会话对象;五是由Hibernate会话对象得到持久化对象(对应于数据库表中的行),通过操作这些持久化对象,就可以操作数据库表中的数据。可见Hibernate真的很麻烦。
  Strus也是这样,其xml配置文件绕来绕去,难以维护。Spring的依赖注入,面向切面的编程,给人的感觉就象是恨不能将所有的JAVA类及其构造参数都移到xml配置文件中去。这些框架给我的感觉是功能强大但有90%的功能我用不上,配置灵活但内容全放在和JAVA程序风格大不相同的xml文件中。Java程序员为什么怕写JAVA程序而热衷于写xml,真是令人费解。
  二、独立开发者如何建立自己的JAVA开发框架
  由于数据分析应用的业务需求主要是数据处理和数据查询,因此我建立框架的目标是:尽可能只利用JAVA语言和SQL语言,直接实现全部数据处理业务需求。让Html、CSS、JavaScript、Xml、JSP等这些普遍认为开发JAVA应用程序必须掌握的技术离我们远些吧!虽然开发一个实用稳定的JAVA三层结构应用程序开发框架是一项难度较大的工作,但我通过先建立一个最简单的应用框架开始,在实际项目开发应用中发现大多数项目都要用到的功能,就逐步往框架中添加,保证了该框架的对象和对象的方法都是实际开发工作中最需要的,从而保证了框架的实用性;框架在长期的项目应用中,得到持续不断的改进,保证了框架的可靠性。
  该框架的设计思路是:利用JAVA面向对象的特性,将Html、CSS、JavaScript、Xml等封装在框架层,由对JAVA程序开发技术了解深入的程序员进行开发完善,力求"辛苦我一个,幸福千万人",使应用层程序员从纷繁复杂的技术细节中解脱出来,专注于用JAVA语言来实现业务需求,再加上现在流行的JAVA集成开发环境"自动代码完成"、"代码重构"等高级功能的辅助,使编写应用程序成为轻松愉快的工作。
  在该框架设计过程中,为尽可能简化应用层难度,采取了一系列措施:一是以数据为中心,能从数据库获取的信息,就不需要应用层程序员来设置。一些以JAVA对象为中心的框架,往往在xml配置文件中来设置主键、非空字段、字段类型等信息,增加了程序设计难度。而本框架直接从数据库中获得数据表的主键、非空字段、字段类型等信息,自动将其用于数据输入校验,不需要写任何额外的程序。二是尽量减少完成一个功能所涉及的文件数量,尽可能做到一个应用功能对应一个JAVA程序文件。目前多数流行框架使用MVC设计模式,控制器一般由框架提供,完成一个数据应用功能还需要用JAVA做模型、用JSP作视图、如果采用O/R映射还需要建立一个JAVA实体Bean来放数据。而本框架一般在一个JAVA程序文件中完成这些工作,在单个业务需求变化时,涉及修改的程序代码集中在一个文件中,减轻了维护工作量。三是URL映射简单直接。流行框架通常存在一个配置URL和实际JAVA类对应关系的xml映射文件,浏览器请求的URL经过xml映射文件重定向后,变得对应关系不清晰了,在发现网页显示错误时,不易直接找出引发错误的JAVA程序文件。本框架URL直接和JAVA程序文件一一对应,如:在浏览器地址栏输入"http://127.0.0.1:8080/test/com.coyizz.pfc.userBean.class"后回车,如果网页出现错误,就立即知道是test应用项目下的JAVA类com.coyizz.pfc.userBean存在问题。
  三、JAVA开发框架主要类介绍
  (一)数据访问对象Sql和DataStore
  数据应用的关键就是要查询和处理数据,直接用JAVA的JDBC数据访问接口提供的功能主要适用于底层数据操作,在应用层使用存在使用麻烦、中文字符集不能很好的处理等问题,业界推崇的DAO模式,要求应用程序应将数据库访问操作封装在一个对象中。我将常用的数据库访问分为两类:一类不涉及数据的输入和显示,相关功能封装到Sql对象中;另一类涉及数据的输入和显示,相关功能封装到DataStore对象中。DataStore对象内部也需要用Sql对象进行基本的数据处理。
  Sql对象实现了Sql查询脚本的解析,以便在基本sql查询脚本基础上添加扩展查询条件,并解决了数据库访问的字符集问题。
  例A:已知用户编码查询用户名称
  String s = Sql.getResultString("select name from usera where code = ‘0001’", 1, AppConnItems.getConn());
  例B:查询全部用户名称
  Sql sql = new Sql("select name from usera");
  Resultset rs = sql.getResultSet();
  例C:在上例基础上限制只能查询单位代码(dwdm)为‘1010’的用户名称
  sql.setLimitWhere("swdm=’1010’");
  rs = sql.getResultSet();
  DataStore仿照PowerBuilder中的DataStore对象开发了Java版的DataStore对象,实现了复杂的数据访问功能,和Hibernet等数据持久化方案比,不需要实体Bean来容纳数据,减少了JAVA类的的数量,增加了数据处理的灵活性;不需要配置xml文件,降低了开发难度,提高工作效率。能生成网页显示表格或表单所需的Html对象。除能方便地处理数字、字符、编码字段外,还能处理文件、图片、超链接等字段。
  例A:查询全部用户名称和编码
  DataStore ds = DataStore("dsMain", "select name,code,fj from usera", AppConnItems.getConn());
  ds.retrieve();
  例B:取得结查询结果的第一行数据中的编码数据或原文数据
  String s = ds.getItemStr(1, "code"); // 取得编码
  s = ds.getItemStr(1, "code"); // 取得原文
  例C:将查询结果第三行数据中的"名称"(name)字段设置"张三"并保存到数据库
  ds.setItem(3, "name", "张三");
  ds.update();
  例D:取得查询结果的显示用Html表格对象
  HtmlTable ht = ds.getHtmlTable();
  例E:取得查询结果的行数
  int rowCnt = ds.getRowCount();
  例F:取得查询结果的列数
  int colCnt = ds.getColCount();
  例G:删除第1行
  ds.deleteRow(1);
  例H:在最后添加1行:
  ds.insertRow(0);
  例I:设置附件列(fj)为文件附件, 存放在Web应用目录的xxFj子目录下,附件最大限制为20M。
  ds.setColIsFileLink("fj", "xxFj", "", 20000000, true);
  例J:设置附件列(fj)为图片, 存放在Web应用目录的img子目录下,扩展名只能为jpg或gif,附件最大限制为4M,图片宽度为200,高不设置。
  ds.setColIsImg("fj", "img", "gif,jpg", 4000000, 200, 0, true);
  从以上例子来看,该数据访问对象和PowerBuilder的DataStore十分相象,使原来的PowerBuilder程序员能较快地转向JAVA程序的开发上来。
  DataStore对象还有其他一些强大的功能:比如dsAdd方法可完成两个DataStore中的数据迭加或追加,setZzjgLimit方法可根据用户权限限制数据操作范围,通过DataStore的一些构造方法,可实现多个DataStore数据的内联或外联。SetHoldData方法可使数据在网页之间保持,validCheck方法可根据数据表的相关信息,对当前存放在DataStore对象中的数据,进行数据类型、非空、主键重复等有效性检查。GetSelectedRowsDs可取得用户在浏览器上选中的数据行,GetDeletedRowsDs可取得用户在浏览器上删除的数据行。Sort可对DataStore对象中的数据按多列进行排序,fillSumRow可对指定多列数据求和。总之,DataStore对象涵盖了数据应用开发中所需的大多数功能。
  (二) HzBean对象
  HzBean对象是响应浏览器请求,显示网页的主要对象。每个需要在网页上显示的对象,都要直接或间接地继承该对象,并且对象名一定要以"Bean"结尾。在浏览器端要调用HzBean对象的后代,可以十分直观地在Web应用URL后跟java类名即可,如"http://127.0.0.1:8080/test/com.coyizz.pfc.userBean.class",显示网页和Java类文件对应关系清晰,方便查找程序问题,不像Strus那样,经过xml配置文件的映射后,往往不知道网页是那个Java类文件产生的了。
  HzBean对象封装了常用的数据处理事件,比如onShowMain是显示主界面,onShoForm是显示表单,onSave是保存表格数据,onSubmit是提交数据等;HzBean还实现了权限控制功能:比如用setCanReadOnly(true)方法就可封锁全部添加、修改、删除数据请求,即使用户直接通过url调用也无法改动数据。
  HzBean可完成网页间的数据的保持。通过getHoldParmStr("name")可以在取得url传递过来的name参数同时,将其保存到session变量中。
  HzBean实现了多个数据访问对象的事务处理,每个Bean对象中使用的数据库连接全部记录在一个connItems对象中,在HzBean处理数据更新的方法后,若捕获到SQL异常,则在每个数据连接上进行回滚。
  (三) SimpleTableDsBean和ComplexTableDsBean对象
  这两个对象利用HzBean、DataStore对象,实现了数据表的增加、删除、修改、输入数据有效性检查、通用查询和排序、数据表可选列打印输出功能。其中SimpleTableDsBean一般用于记录数在50条以下的数据表列数较少的数据表,而ComplexTableDsBean记录数在50条以上列数较多的数据表。ComplexTableDsBean还适合处理比较复杂的数据,如关联数据列等。在最简情况下,只要以下几行代码,就可实现数据表的增、删、改、查、打:
  public class TestBean extends ComplexTableDsBean {
  public void onInit() {
  regDs(new DataStore("dsMain", "select * from usera", getConnItem()));
  }
  }
  在浏览器的地址栏输入"http://127.0.0.1:8080/zhfz/com.coyizz.test.TestBean.calss"就可运行程序。
  (四) Html*对象
  在需要控制浏览器端的显示细节时,大多数框架是用DrameWave等工具来设计jsp网页来满足需求,但jsp文件通常是一个Html、jsp标签、java代码混合的大杂绘,无法通过编译器进行语法检查,因此,本框架用以Html开始命名的一批对象封装了常用的Html元素,如HtmlA封装了"A"标签,HtmlTable封装了"TABLE"标签。这些对象都继承于HtmlElement,都用add方法来在本标欠内添加其它Html标签。比如要发送给浏览器内容为:""则对应的Java代码为"new HtmlB()",如果要发送给浏览器内容为:"Hellow"则对应的Java代码为"new HtmlB().add(new HtmlFont("Hellow"))"。一般情况下Html元素对象是属于底层对象,只在需要精细控制显示细节时才使用。这些Html元素要显示在网页上的方法是在HzBean后代对象中的onShowMain方法或onShowForm等方法中,用addSheet, addBar等方法显示。这样一来,用强类型的Java对象代替了弱类型的Html标签,一切都在Java的控制之中。
  当然,有时某些复杂的表格或只有Front和DrameWave才能写好的页面,可先用Front和DrameWave写好纯静态的Html页面,并在需要插入动态数据的地方预留标签,在HzBean的后代对象中,用getHtmlFromFile方法将文件读到内存后,将动态数据插入其中,完成静态页面和动态数据的组合。
  (五) DbConns对象
  提供了通过JDBC驱动或应用服务器数据库连接池连接数据库的方法,目前可连接Tomcat数据连接池、Oracle、Sybase Adaptive Server Anywhere、PostgreSQL数据库。

客厅装修,墙面究竟用什么材质的踢脚线好在客厅装修当中,墙面踢脚线的作用可不容小觑哦!它不仅能起到很好的装饰作用,还能保护墙面的整洁,人们在行走时难免会碰到墙面,如果安装了踢脚线那就不怕墙面会留下脚印,或者是其他脏东西啦提升幸福感,从呼吸开始,高质量家电绝对是你的不二之选相信大家能明显感受到,这几年的空气质量明显的下降,空气作为我们生存最为重要的物质之一,若它生病了,我们的身体也会随之遭殃。为了身体的健康,笔者去年在家中购置了一台EBC空气环境机,还在为618买什么发愁吗?认准莱克电气就完事儿了一年一度的618购物节就要到了,本来是很开心的事,但是却有很多人在犹豫该买点什么。既担心错过机会,又害怕买到不称心的产品。尤其是在家电领域,本身使用过的产品有限,买新的也希望能用很办公室必备神器aigo国民好物移动固态硬盘S7Pro不知你是否会经常因为工作加班而烦恼?特别是当工作内容不多,却出现因为电脑变慢拖延时间的事情,心情也会随之烦躁。例如传输文件太慢,电脑太卡顿等,原本能快速的完成的工作却要因此而拖延避透过社区团购的表象,看永辉超市的长期价值同程生活的破产,不仅掀起了一波对社区团购模式的反思,更让业界愈发坚定了零售企业缔造强供应链的必要性。而有着供应链实干家之称的永辉超市正是为数不多的有着强供应链壁垒的零售科技企业。据JavaSaaS多租户多商户uniapp商城源码多少钱?市面上的源码产品不计其数,免费的付费的一搜一大把,不过要找满足自己需求又高性价比的还是要多对比一下。如果你想找一款用于公司实际项目,可商用系统稳定的JavaSaaS多租户多商户un说了那么久的数字化营销,它到底能为企业做到什么?伴随着互联网技术的不断发展,数字化营销这个词出现的频率越发上升,我们总是在说企业需要进行数字化营销,那么它到底能为企业做到什么?实施数字化营销模式时又需要注意什么?首先,最直观的一超能续航!用上OPPOK7x后,终于跟充电宝说拜拜了OPPOK系列自推出以来,每一代产品都自带真香属性,这一次的OPPOK7x同样如此。OPPOK7x售价1499元,主打硬核5G,超能续航,在续航闪充性能屏幕等方面均有着出彩的表现,艾瑞微课堂医药产业互联网行业洞察产业痛点目前我国医药产业总体在政策导向下面临转型压力,而我国传统医药产业痛点主要集中于经营模式过于单一,线上监管滞后以及针对供应链管理的不足。亟需医药产业互联网协同创新,优化信息流2021年综合性终身教育平台用户大数据报告腾讯课堂数据篇宏观背景驱动因素1)社会环境驱动高度社会竞争人口老龄化阶层焦虑和信息噪音促进终身学习。2)行业变化驱动内容服务供给扩大,创新技术促进产业升级。3)新冠疫情驱动供需缺口拉大,就业形势艾瑞微课堂直播与短视频发展及应用策略洞察核心摘要直播电商2016年出现,2019年至今正处于爆发期,2019年直播电商整体成交额达4512。9亿元,同比增长200。4,占网购整体规模的4。5,成长空间较大,预计未来两年仍
德系高颜值旅行车,一条轮胎价值上千元,7。6S破百,纯进口31万新能源汽车是各大车企都在往之发展的大方向,而瓦罐旅行车虽然在中国市场上也有一批固定的拥趸,算是自由与情怀的象征,但是相对轿车与SUV来说还是非常小众,在国内布局有旅行车的品牌很少,图基于Chromium的Edge新特性盘点你会升级使用吗?微软内部正在积极改进基于Chromium的Edge浏览器,从种种迹象表明已经为即将到来的公测做好准备。从EdgeHTML切换至Chromium之后,Edge浏览器迎来了脱胎换骨般的他曾做过3个手机品牌高管,公司全倒闭,如今被雷军花1个亿挖走近日华为新手机p30pro的发布彻底火了一把,出色的摄像功能让苹果都自行惭愧,不得不说华为是稳坐国内智能手机技术流一把手的位置了,智能手机市场这些年竞争很激烈,不少品牌在浪潮中从兴马云为数学获奖者颁奖我高考数学考1分(整理观察者网吕栋)3月29日,阿里巴巴全球数学竞赛颁奖典礼在杭州召开,马云为51名数学获奖者颁奖。对于坊间传闻自己高考数学考了1分,马云在演讲中表示,此前外界传闻是事实,但他非常市值高达243亿美元Lyft成功IPO盖世汽车讯据外媒报道,网约车初创公司Lyft星期四(3月28日)进行首次公开募股(IPO)时的市值达到243亿美元,在投资者需求强劲的情况下,所筹集的资金超过设定的目标。Lyft的你还在ping吗?7种进阶方法让你快速测试端口连通性Ping是WindowsLinux和Unix系统下的一个检查网络连通性的命令工具,对于大部分互联网用户来说很实用很方便,但是ping有个缺点不能指定端口,如果源地址被设置禁ping家庭宽带升级为200兆最具性价比的无线路由器在这里在提速降费的号召下,很多地区的家庭宽带已经升级到200兆。然而,带宽一旦超过100兆,就要使用千兆路由器。那么,如何选择一款性价比更高的千兆无线路由器呢?先普及一个基础常识,所谓的畅享指尖便利!中山各城轨站推广线上购票4月21日,记者从铁路部门了解到,基于目前的疫情防控形势,中山各城轨站现正推广铁路12306手机APP购票新模式,实现零接触便捷出行。据悉,目前中山各城轨站安排了工作人员在售票窗口ID。4CROZZ,创新一直在路上ID。4CROZZ上搭载的两项辅助驾驶和互联系统ARHUD增强现实抬头显示和具有L2高级辅助驾驶系统IQ。Drive。其中,ARHUD增强现实抬头显示可以将虚拟显示与现实情景融为一荒木由美子马云的梦中情人,为见她一面马云曾先后6次前往日本2004年,阿里巴巴总部来了一位特别的客人。她是马云的梦中情人小鹿纯子。马云激动地表示没有她,就没有阿里巴巴,更没有今天的马云。多年来,为了找到她,马云一次又一次前往日本。奇怪的是这家公司,抢着量产L4车东西(公众号chedongxi)作者木米编辑晓寒你觉得无人驾驶还有多远?5年,还是10年?这家公司,正在努力让你在2024年就能买到无人车,L4级那种。去年,元戎启行推出了新的自