持久化(Persistence)
持久化框架的概述
EMF持久化API
XML资源
EMF针对基于XML资源的基础接口,XMLResource,扩展Resource加入了数个与持久化形式相关的方法。基础实现,XMLResourceImpl,可以用来将任一EMF 序列化为XML。它产生和消耗(consume)的XML格式,以及它的性能特征,可以有很多种方式来控制。
首先讨论这个实现提供的默认序列化格式,然后是其支持的多个保存和加载的选项,以及元数据如何被用来自定义(customize)序列化格式,最后,讨论这个实现的一些其他特征,包括其支持的默认选项,外在的ID和DOM转换。
默认序列化格式
为了说明XMLResourceImpl的默认输出格式,我们先创建一个对象并保存,如下:
USAddress address = EPO2Factory.eINSTANCE.createUSAddress();
URI uri = URI.createPlatformResourceURI("/project/out.xml", true);
Resource resource = new XMLResourceImpl(uri);
resource.getContents().add(address);
resource.save(null);
创建USAddress类的实例,将其加入到XML资源的内容中,然后保存资源。注意此处是显式地(explicitly)实例化XMLResourceImpl,仅仅是为了说明。在练习时,你应该总是通过ResourceSet接口创建资源。
out.xml中生成的序列化,如下:
<?xml version="1.0" encoding="ASCII"?>
<epo2:USAddress xmlns:epo2="http://www.example.com/epo2.ecore"/>
首先,在XML声明中指定的编码是ASCII。这是默认的,但并不是特别好的选择。最常使用的是