我正在接触EMF,我想检查一下我头脑中的概念是否准确。
我知道可以在Eclipse中创建EMF模型,然后使用它来生成Java代码。
我进一步了解该模型可以序列化为磁盘然后再返回,但我不明白这个的使用。
模型文件本身当然可以保存吗?是否有明显的序列化用例?
答案 0 :(得分:3)
我想,你在混淆两个术语:“元模型”和“模型”。
EMF模型实际上是一个元模型:它是可以保存数据的模型的描述。 EMF模型/元模型可以以许多不同的格式表示。对于EMF,我们通常使用.ecore/.genmodel
或.xcore
个文件。
从EMF模型/元模型中,您可以生成代表模型和模型操作的Java代码。从理论层面来看,EMF模型和Java代码是相同的,因为它们代表相同的信息。
使用生成的Java代码,您可以实例化对象以保存模型数据。然后,可以将这些数据以多种不同的格式保存到磁盘。 EMF可以自动提供将模型数据序列化为XML并返回磁盘所需的代码。 (实际上,没有涉及生成的代码 - 它完全基于...Factory
类中模型的描述)。实现其他格式(如JSON或数据库模式)相当容易。
一个例子:
假设您已使用EMF描述自行车的模型(车轮,车把,车架,鞍座等)。从EMF模型中,您可以生成Java类,这些类可以根据对象和它们之间的关系描述相同的自行车。
现在,您可以通过创建/构建和连接Java类的对象来实例化模型中的许多不同的自行车。
然后可以将这些自行车序列化为XML并返回,这样就可以将自行车保存到磁盘上。
通过MDA(模型驱动架构),我们实际上讨论了4个级别的模型:
.ecore
文件和...Package
类中找到的信息在M3模型中表示为描述M2模型。后者真正对我们这些教授MDA的人很重要......在你正常的工作中,你真的只需要想到M0,M1和M2 ......
答案 1 :(得分:0)
序列化是指持久化模型实例的内容(您的数据)。您可以序列化为XML,JSON,数据库等。