服务数据对象简介 - 编程入门网
得到较 好的性能,但缺点是不能跨 SDO 实现移植。
对于主要关注性能,同样的 DMS 设计也可使用 SDO API 实现。在这种情况 下,DMS 类( employeeClass 、 employeeNameFeature 等)中缓冲的元对象, 将代替 EMF 类型 EClass 、 EAttribute 和 EReference 等),成为 commonj.sdo.Type 和 commonj.sdo.Property 的类型。此外,如果性能不重要 ,那么可以方便地使用基于 String 的 SDO API(如 setBoolean(String path, boolean value) ),因此不需要缓冲元对象。不幸的是,这种解决方案虽然更 方便,但运行起来也更慢。 下面的代码片段说明了 SimpleEmployeeDataMediatorImpl.java 中 Employee 模型的定义。但这些代码并没有构建 SDO 对象,构建的仅仅是 SDO 对象的模型:
注意,我们使用值 true 对 employees EReference 调用 setContainment ,因此每个雇员都“包含”他或她的下属。否则,嵌套的雇员就不会(即被包含 )在数据图中,变更摘要也只能包含根对象的修改,而不能包含其他雇员的修改 。 建模 SDO 您可能想“很有趣,但是这样只能得到 EMF 对象而不是 SDO 对象,还有什 么窍门吗?”当然有,而且很简单。Employee EClass 属于 employeePackage EPackage ,并且包含下面的调用:
运行时,这个工厂将创建 DynamicEDataObjectImpl 类型的对象,该对象实 现了 DataObject 接口(即它是一个 SDO 数据对象),而不是默认的 DynamicEObjectImpl 接口,并且可以智能地创建普通的 EMF 对象。SDO 和 EMF 对象之间的关系就很清楚了:SDO 对象就是同时实现了 SDO DataObject 接口的 EMF 对象。事实上,这些附加方法的实现是委派给核心 EMF 方法实现的。 创建 SDO 实例 现在,已经拥有了我们的数据对象,就可以建立 Employee 的实例并设置不 同的属性了。如前所述,我们将使用 EMF API 来最大程度地提高性能。
可以使用“employees”引用把雇员“链接”在一起,比如:
一旦创建了数据对象,还需要将其连接到数据图中。我们首先要调用数据图 的 setRootObject() 方法,传递希望用作根的数据对象,这里使用 Employee The Boss 。
继续讨论数据图之前,要先开始记录日志。如果希望使用 SDO,那么在改动 数据图之前,要先调用其变更摘要的 beginLogging() 方法。基本的原理就是清 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |