接上文:http://blog.csdn.net/qinjienj/article/details/6851112
EMF实际上定义了2种meta model,分别称为Ecore和Genmodel。Ecore包含了模型的定义,我们在创建EMF模型的时候,也是通过新建和编辑Ecore文件来进行。Genmodel包含了自动生成Java代码(模型的POJO类)的信息,比如怎样生成POJO,生成的POJO放到哪里。当对Ecore进行修改时,Genmodel自动获得更新。
创建一个EMF项目(或者plugin项目也可),然后建立一个Ecore模型。
![](http://hi.csdn.net/attachment/201110/7/0_1318023580cF3k.gif)
打开Properties视图,自行定义model的名称,namespace prefix,以及namespace url。
![](http://hi.csdn.net/attachment/201110/7/0_131802411645D5.gif)
右键点击新建好的csdn模型,添加child。
child有5种支持类型。
EAnnotation是与Teneo结合,用作和hibernate以及数据库schema之间的mapping;
EClass是指模型里面的一个类;
EData Type代表数据的类型,比如int,float,或者java.util.Date
![](http://hi.csdn.net/attachment/201110/7/0_1318024210kDmk.gif)
笔者创建了一个叫Blog的EClass,通过Properties视图可以修改这个EClass的属性,通过右击Blog,可以添加新的child或者sibling。
其中EReference是一个指向其他EClass的链接,比如可以用来定义Blog类中包含的类成员变量,或者可以理解为数据库中的foreign key。
![](http://hi.csdn.net/attachment/201110/7/0_1318024626DGp1.gif)
在Ecore创建完成后,新建一个genmodel (EMF Generator Model),在“New EMF Generator Model”这一步选择Ecore model
![](http://hi.csdn.net/attachment/201110/7/0_1318030284cbHz.gif)
选择刚才建立的csdn.ecore,然后点击Load
![](http://hi.csdn.net/attachment/201110/7/0_1318030584u7sZ.gif)
![](http://hi.csdn.net/attachment/201110/7/0_131803072240Lt.gif)
点击Finish后,genmodel生成完毕。
在Properties视图中可以配置genmodel,比如Base Package可以定义将生成的代码放到哪个路径底下。
![](http://hi.csdn.net/attachment/201110/7/0_1318030979bwdW.gif)
右击生成的genmodel,可以选择生成各种代码,其中“Generate Model Code”会生成模型类和其他相关Java类。
![](http://hi.csdn.net/attachment/201110/7/0_1318030812L09L.gif)
生成的Java代码分为3个包,model.csdn,model.csdn.impl,model.csdn.util。
model包里面主要有所有EClass的接口文件(所有接口均继承自EObject,因此所有的EClass都是EObject的子类),以及非常重要的CsdnFactory文件(用来创建EClass文件的实例,Factory类的eInstance.createXXX()方法是创建实例的唯一方法),CsdnPackage文件(包含meta model每个class,每个class的每个feature,每个enum,每个data type的信息,注意这些信息是创建hibernate mapping文件的必备信息)
model.impl包里面主要是model包中接口文件的具体类;
model.util包里面有AdapterFactory。
<待续>
分享到:
相关推荐
这些模型可以被用来自动生成功能丰富的Java代码,从而减少了手动编写代码的工作量。EMF通过XMI(eXtensible Metadata Interchange)格式来存储模型,这使得模型可以跨工具和平台交换。 在“Merge”这个上下文中,...
本文对IEC 61970标准定义的CIM模型进行了介绍,对EMF进行了简单的说明,对CIM模型转换为EMF模型并生成Java代码进行了详细的说明,并给出了在进行CIM模型和CIM XML使用过程中的建议,为CIM模型的落地化实用提供了参考...
2. **代码生成**:一旦模型定义完成,EMF可以自动生成Java类,这些类与模型一一对应,提供了丰富的API供开发者进行操作。此外,还可以生成XML序列化代码,使模型能够在持久化存储和传输中使用。 3. **模型操作**:...
3. **生成代码(Code Generation)**:EMF可以根据元模型自动生成Java类和其他语言的代码,这些代码提供了对模型实例的访问和操作接口。 4. **序列化(Serialization)**:EMF支持将模型实例序列化为XML格式,方便...
1. "使用 EMF 进行元建模:生成具体、可重用的 Java 代码片段" 这篇文档可能详细讲解了如何使用EMF的代码生成功能,将元模型转换为可执行的Java代码,实现模型到代码的映射,提高代码的标准化和可维护性。...
ANTLR能生成Java、C#、Python等多种语言的解析器和词法分析器,与EMF结合时,可以用于解析DSL或自定义语法,将输入的文本转换为EMF模型,进一步增强EMF的灵活性和扩展性。 在Eclipse插件开发中,EMF扮演了关键角色...
在使用EMF进行模型驱动开发时,模型会自动生成相应的Java源代码,这些代码通常包含数据结构和基本操作。然而,当开发者需要对生成的代码进行扩展或定制时,往往需要在生成的代码基础上添加额外的功能。`...
这个环境使得开发者能够在应用程序中使用EMF模型,而无需关心底层实现的复杂性。 描述中提到的"eclipse plugin 最新 emf-runtime 版本2.10.1"表明这是一个针对Eclipse IDE的插件,用于支持EMF 2.10.1版本的开发工作...
EMF的一大优点是它可以自动生成Java代码,这些代码对应于你用Ecore定义的模型。这减少了手动编写重复代码的工作,提高了开发效率。 5. **运行时环境** EMF提供了运行时环境(EMF Runtime),使得模型可以在应用...
3. **Code Generation**:EMF XSD SDK可以根据XSD文件自动生成Java代码,这些代码可以直接用于解析和生成XML文档。 4. **Validation**:SDK提供了XSD验证机制,确保XML实例文档符合指定的XSD模式,有助于确保数据的...
Eclipse Modeling Framework (EMF)是Eclipse 的一个基于Java语言的模型构建框架,它通过提供通用 的模型框架和自动代码生成工具,极大地简化了基于结 构化模型的Eclipse插件或者应用程序的开发
- **代码生成与逆向工程(Code Generation & Reverse Engineering)**:从元模型生成Java代码,反之亦可将Java代码逆向工程为元模型。 3. **EMF的使用场景** - **软件建模**:EMF广泛应用于UML(统一建模语言)和...
4. EMF模型的生成与使用:讲解如何定义XML Schema,由EMF自动生成Java类,以及如何在代码中操作这些模型对象。 5. 数据持久化:介绍如何利用EMF的持久化服务将模型数据保存和加载到文件中。 6. 插件开发:讲解如何在...
- 一旦模型创建完成,EMF会生成Java代码,这些代码提供了对模型实例的访问和操作。 3. **XML绑定(XMI和XSD)** - XMI(XML Metadata Interchange)是EMF默认的数据交换格式,用于将Ecore模型转换为XML。 - XSD...
在这个SDK中,你可以找到工具和库,帮助开发者将XSD文件转换为EMF模型,然后利用这个模型生成Java代码,这样就能在程序中方便地处理XML数据。 该SDK的使用主要包括以下几个关键知识点: 1. **元模型创建**:使用...
EMF是基于模型的软件开发框架,它提供了生成Java代码、运行时库和XML序列化的能力,常用于构建复杂的、数据驱动的应用程序。而SDO则是一种数据访问API,旨在提供对各种数据源的统一访问。 在Java编程中,EMF允许...
2. **代码生成**:基于元模型,EMF可以自动生成Java类和其他相关代码,这些代码可以直接在应用程序中使用。 3. **持久化**:EMF支持模型的持久化,可以将模型数据存储为XML文件或其他格式。 4. **模型转换**:EMF...
5. **代码生成**:EMF可以自动生成Java代码,基于元模型创建对应的Java类。`GeneratorModel`和`Acceleo`是常用的代码生成工具,它们能极大地提高开发效率。 6. **事件和监听器**:EMF提供了事件机制,通过注册监听...