持久化.PDFVIP

  1. 1、本文档共45页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
持久化

第15 章 持久化 在模型持久化方面 EMF 包含一个强大的架构。它本身通过高度可定制的资源实现支 持 XML 串行化。另外,它也提供了专用版本来支持 XML 元数据交换(XML Metadata Interchange ,XMI)2.0 标准(用作 Ecore 的标准表示) ,以及将 Ecore 串行化为 Essential MOF(EMOF) ,从而帮助与各种建模工具的互操作。 然而,EMF 并不要求持久化基于 XML ,甚至不要求基于流。架构提供了一个足够灵 活的 API ,可以支持各种存储,甚至可以在各种类型的存储中持久化对象,对象之间彼此 引用。 第 2 章解释了持久化架构,并且看到了通过资源可以轻松地加载和保存 EMF 对象。 在本章中,将更仔细地观察架构 API ,并讨论 EMF 提供的基于 XML 的资源实现。也将讨 论 EStore ,这是持久化的另外一种机制,允许外部存储直接备份活动对象。 15.1 持久化架构概述 在 EMF 中,基本的持久化单元称为资源。简单来说,资源是将要连同其内容一起被 持久化的一个或多个对象的容器。 EMF 对象是通过 Resource 接口被持久化的,方法是将它们添加到资源的内容列表, 然后调用其 save()方法。例如: PurchaseOrder po = ... Resource resource = ... resource.getContents().add(po); resource.save(null); 这里将 purchaseOrder 添加到 resource 的内容中,然后保存resource 。如果 purchaseOrder 包含任何其他对象,比如一个物品列表,那么默认会把它们与 purchaseOrder 一起持久化到 同一个资源中。如果它通过非包容引用引用其他任何对象,那么就需要确保另一个对象包 含在资源中:可以把它直接添加到同一个资源或另外一个资源,或者由资源中已经存在的 第IV 部分 使用EMF 编程 一个对象直接或间接包含它。否则,当持久化资源时将丢弃悬挂引用。 save() 的参数是 Map ,如果想要指定用在保存操作中的一些选项,那么它将是非 null 值。将在 15.3.3 节讨论 EMF 的XML 资源支持的选项。 反向操作(即从对象的持久化形式在内存中重新创建活动对象) 的工作方式类似。此时 使用 load()方法,之后将从资源的内容列表中访问对象: Resource resource = ... resource.load(null); PurchaseOrder po = (PurchaseOrder)resource.getContents().get(0); 将在 15.2.3 节更详细地讨论 Resource 接口。 前面的代码片段至少又带来了几个问题:XML 串行化被写入到什么位置,或者从什么 位置读取它们?以及最初是从什么地方获取资源的? 要管理不同资源的对象之间的引用,EMF 的持久化架构包含另外一个接口 ResourceSet ,它用作资源的容器。getResources()方法返回集合中的资源的列表。一般来讲, 资源通过资源集(显式地或者自动作为按需加载的一部分)创建。例如: ResourceSet resourceSet = new ResourceSetImpl(); URI uri = URI.createURI(file:/c:/data/out.epo2); Resource resource = resourceSet.createResource(uri); 1 这里创建了一个资源集 ,之后调用它的createResource()来显式创建一个资源。向这个 方法传递一个统一资源标识符(Uniform Resource Identifier,URI) ,该URI将被赋给资源, 以便在资源集内进行标

文档评论(0)

ldj215322 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档