XML 和 Java 技术: 数据绑定的多种用法
2010-04-02 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

如果 XML 不是非常易读的格式,或者并非如希望那样以业务目的分开,或者其格式会经常变化,则第一种方法将会是很好的选择。该方法需要更多一点的 XML 知识以及使用 API(更多地以技术为中心而不是以业务为中心)的能力。
另一方面,如果 XML 是按照业务需求组织的,并且 XML 结构很少变化,则可以一次性的创建类和对象,然后在运行时将数据作为业务数据使用,完全不用担心数据底层的 XML。
如何使用数据?
开发人员常常会疏于考虑:如何根据选择的数据绑定解决方案使用 XML 文档中的数据。但是,这可能是正确决定数据绑定方法的一个最重要的因素。
将对象用于持久数据
将 XML 数据转换成对象实例的数据绑定方法只适用于那些要多次使用的数据。获取 XML 文档中的数据并将其转换为多个对象中的成员变量数据涉及大量的处理工作。要从这个方法中获利,需要多次使用到该数据。
仔细查看一条数据的访问次数,同时也考虑一下使用了多少数据。比如说,假设 XML 中为每个人存储了 20 条数据,但应用程序中只访问了其中的一条,使用大量的资源转换数据却只是为了访问其中的一条。不论怎样计算这都不可能获利。
使用对象在其它组件中隐藏 XML
隐藏存储介质是使用基于对象的方法的另一个重要原因。因此应用程序中可能有一个组件对 Person 对象执行一些特殊的处理。可以从数据库或者 XML 文档或者属性文件中读取 people 数据,然后把这些数据转换成 Person 对象,再把这些对象传递给处理组件。
即使只是暂时使用数据,这也是用对象表示数据的一种很合理的情形。在本例中,如果将数据表示为对象格式,并且应用程序的其它部分已了解如何使用该格式,则可以获益。同时还避免了组件的数据转化和数据加载,而您只希望使用某种类型的对象来实现相应操作,这很好地实现了应用程序中的关系隔离,而它正是应该遵循的一条重要的设计原则(应用程序中的每个组件只实现一个功能,并实现好该功能)。
短期,只使用一次的数据
如果没有要重用的数据,而且不以对象的形式将数据传递给应用程序中的另一个组件,则可以考虑使用 DOM 或者 JDOM 之类的 API。这比将 XML 转换成非文档格式所使用的资源少,从而可以全面受益。此方法比以高昂的代价将数据转化为特定于业务的对象、以后却只使用该数据一二次要好得多。
尽管本文的主题是数据绑定,但有一点值得提到的是在这些情况下甚至可以考虑使用 SAX(Simple API for XML)这样的 API,它完全不提供对象模型(以文档或对象格式)。使用它处理 XML 只使用很少的内存和时间,如果确实只需要使用一条数据一到两次,则此方法可让您获益巨大。使用像 SAX 这样的 API 需要更多的了解 XML 的知识,但了解这些知识是非常值得的。
结束语
这篇关于XML 和 Java 技术 的系列文章不是提供问题的解决方案,而是希望能让读者自己思考如何使用一种特殊的技术和 API —— 本例讨论了 XML 和数据绑定。您可能会同意其中的某些观点,而不同意另外一些观点。但是应该明确的是,一定要更深入地思考如何在自己的应用程序中使用 XML。
本文旨在为读者提供一个起点。欢迎访问 XML 和 Java 技术论坛,在那里将以更加互动的形式继续这些讨论。如何使用数据绑定,您最喜欢使用哪一种 API,是否想出了数据绑定技术在应用程序中的一些创造性用法?请与我分享这些信息……我期待在网上与您进行交流。
更多精彩
赞助商链接