EMF模型的序列化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EMF模型的序列化相关的知识,希望对你有一定的参考价值。
我正在接触EMF,我想检查一下我头脑中的概念是否准确。
我知道可以在Eclipse中创建EMF模型,然后使用它来生成Java代码。
我进一步明白,模型可以序列化到磁盘然后再返回,但我不明白这个的使用。
当然模型文件本身可以保存吗?是否有明显的序列化用例?
我想,你在混淆两个术语:“元模型”和“模型”。
EMF模型实际上是一个元模型:它是一个可以保存数据的模型的描述。 EMF模型/元模型可以以许多不同的格式表示。对于EMF,我们通常使用.ecore/.genmodel
或.xcore
文件。
从EMF模型/元模型中,您可以生成代表模型和模型操作的Java代码。从理论层面来看,EMF模型和Java代码是相同的,因为它们代表相同的信息。
使用生成的Java代码,您可以实例化对象以保存模型数据。然后,可以将这些数据以多种不同的格式保存到磁盘。 EMF可以自动提供将模型数据序列化为XML并返回磁盘所需的代码。 (实际上,没有涉及生成的代码 - 它完全基于...Factory
类中的模型描述)。实现其他格式(如JSON或数据库模式)相当容易。
一个例子:
假设您已经使用EMF来描述自行车的模型(车轮,车把,车架,鞍座等)。从EMF模型中,您可以生成Java类,这些类可以根据对象和它们之间的关系来描述相同的自行车。
现在,您可以通过创建/构造和连接Java类的对象来实例化模型中的许多不同的自行车。
然后可以将这些自行车序列化为XML并返回,这样您就可以将自行车保存到磁盘上。
通过MDA(模型驱动架构),我们实际上讨论了4个级别的模型:
- M0通常是物理人工制品。例如。在纸上的自行车或账单。
- M1是物理人工制品的表示 - 这是模型
- M2是模型的描述 - 元模型 - 在这种情况下是基于EMF的模型,描述模型的实体,关系和属性
- M3是对模型描述的描述 - 元元模型 - 实际上也可以在EMF中表示。您在
.ecore
文件和...Package
类中找到的信息在M3模型中表示,因为它们描述了M2模型。
后者真的只对我们这些教MDA的人有用......在你正常的工作中,你真的只需要想到M0,M1和M2 ......
序列化是指持久化模型实例(您的数据)的内容。您可以序列化为XML,JSON,数据库等。
以上是关于EMF模型的序列化的主要内容,如果未能解决你的问题,请参考以下文章