|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解把持
Hibernate的reference的副题目叫做:切合java常规的O/R耐久化,这展现了今朝三层布局的严重成绩,就是三层的不一致。到今朝为止,仍旧难于在web界面上完成C/S形式中"master-detail","lookup"的快速的用户交互。
今朝罕见的webapplication的布局,包括webbrowser/applicationserver/database。database占有支流的仍旧是典范的E/R模子,这个模子是基于行集的,因而在vb/delphi/powerbuilder的理论中,datasource/tableset都是基于行集的,odbc/jdbcdriver也都是基于行集的。view层的DbGrid也是基于行集的,和Entity模子对应得十分好,开辟浅易直不雅,信任这是C/S形式失掉敏捷推行的重点缘故原由之一。“master-detail”,"lookup"都是C/S形式下极其罕见和直不雅的联系关系形式。
但实质上,Objectpascal/java都是面向对象的。在此,就呈现了一次严重的不一致:OOvsE-R。呈现的办理体例就是EJB和O/Rmapping工具。EJB的entitybean是初期的entity封装情势。可是和如今以hibernate为代表的先辈工具(对POJO实行耐久化)对照起来,在OO与ER的对应上显得粗笨而难于利用。在这些工具中,代表OO与E-R交融的最实质的功效则是承继树与表布局的对应干系。hibernate2撑持整棵承继树与一个表对应、承继树中每一个类与一个表对应两种基础的对应干系,而hibernate3引进的join标志则更能够将两者交融,完成每一个类可选与基类在统一个表中耐久大概在新表中保留部分耐久数据,能够说hibernate3把这个对应的义务完成得十分杰出。"master-detail","lookup"则对应hbm.xml如许的映照文件中的"one-many","many-one"联系关系。
database与java的交融完成以后,下一步,不成制止的就是现有的webclient与服务器端代码之间的交融。从外表上看,webclient年夜多接纳html/javascript完成,而服务器端接纳java输入,两者是复杂的命令/反应的模子,这个模子从model1开展到MVC的模子后,编写代码变得明晰,可是开辟职员仍旧发明,编写webapp仍旧不是一件复杂的事变。struts/webwork仍旧只长短常底层的基本,对编写客户端营业对象没有甚么匡助。好比说,在服务器端java程序建模时,人人已习气用pojo剖析定单/客户/产物,可是在编写webclient时,struts/webwork都只能匡助你完成页面提交/反应的流程,却不克不及匡助你剖析客户端营业:新建定单时,选择了客户以后,判别此客户是不是有充足的预收款,如许一个复杂用例在程序员心目中的反应仍旧是每一个字段的inputtag,每一个页面post下去的model,和怎样用action的处置再次衬着下一个页面。
最年夜的成绩,就是作为体现层的webclient端代码与服务器端代码包含的语义摆脱。详细体现在:在接纳struts/webwork如许的MVC布局的时分,一般不会思索在客户端举行营业把持,好比由javascipt判别预收款是不是充足。因而必要不休的屡次页面革新才干完成全部逻辑。
要办理此成绩,一般能够接纳把营业逻辑部分转移到客户端,以javascript+xmlhttp或javascript+webservice,javaapplet/application,乃至接纳office平台(嵌进代码到excel)完成全部营业逻辑。也有良多成绩:
1,若要在客户端完成营业逻辑,大概客户端代码没有对应Pojo如许的基本object举措措施。javascript缺少如interface如许的基本布局。excel计划在这点加倍难于举行,由于全部开辟触及到的言语太多,形成开辟难度加年夜,项目把持坚苦。间接成果就是,难于在客户端代码中界说"master-detail","lookup"等联系关系。就算在项目计划中在javascript中界说pojo(plainoldjavascriptobject)及其联系关系,也难于使用hbm.xml如许的现成联系关系形貌。
2,客户端基本举措措施难于举行界面元素绑定。在处置大批数据时,excel计划在此表现出出色的上风,客户对内置程序的excel的承受水平十分高,但弱点是这类excel程序难于做到xmlhttp能够轻松做到的静态查询等特征。
3,客户端基本举措措施难于与服务器端举行交互。xmlhttp和webservice可选,可是在企业使用中其低下效力大概会带来服务器的压力隐患,下降功能和吞吐量。若excel计划,则一样面对着与服务器数据交互的困难。不论是xmlhttp计划仍是application计划,都面对着丢弃struts/webwork从头完成request/responsedispatch的请求。
4,客户端基本举措措施难于举行单位测试。有junit4js,port了junit3.8.1,但没有成熟的stub/mock工具。excel计划在此几近不成测试。
5,客户端基本举措措施难于调试。javascript缺少相似log4j如许的log工具(log4jshttp://www.petrusrex.com/Programmes/jslib.htm如许的工具还远没有成熟),也难于举行断点跟踪。excel计划却是有完全的vba情况。
6,客户端基本举措措施运转效力低。javascipt/vba都是注释言语,难于完成庞大逻辑,其功能决意只能用它们举行细粒度的界面把持。
7,因为扫瞄器的决裂,形成言语的不尺度,使用程序难以跨平台利用。在IE平台上可使用behavior和expression这类类AOP的操纵,却没法在mozilla中完成。
jsf计划无望成为备选计划,可是依照myfaces今朝的情形,要完成更多的体现层控件,才干完成更庞大天真的把持。
上面一次软件开辟体例的冲破,向前看,大概呈现计划体例的冲破,MDA是偏向;另外一个偏向就是向后对详细完成的冲破,在相似webapp如许的详细手艺(除webapp,application一样面对相似成绩)上,关于是不是可以把model的界说间接带进到体现层,JSF和.NET大概会有新一轮合作。
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的 |
|