`
何足道
  • 浏览: 33933 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

使用EMF建立模型并生成Java代码

emf 
阅读更多

接上文: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模型。

 

打开Properties视图,自行定义model的名称,namespace prefix,以及namespace url。

 

右键点击新建好的csdn模型,添加child。

child有5种支持类型。

EAnnotation是与Teneo结合,用作和hibernate以及数据库schema之间的mapping;

EClass是指模型里面的一个类;

EData Type代表数据的类型,比如int,float,或者java.util.Date

 

笔者创建了一个叫Blog的EClass,通过Properties视图可以修改这个EClass的属性,通过右击Blog,可以添加新的child或者sibling。

其中EReference是一个指向其他EClass的链接,比如可以用来定义Blog类中包含的类成员变量,或者可以理解为数据库中的foreign key。

 

 

在Ecore创建完成后,新建一个genmodel (EMF Generator Model),在“New EMF Generator Model”这一步选择Ecore model

 

选择刚才建立的csdn.ecore,然后点击Load

 

点击Finish后,genmodel生成完毕。

 

在Properties视图中可以配置genmodel,比如Base Package可以定义将生成的代码放到哪个路径底下。

 

右击生成的genmodel,可以选择生成各种代码,其中“Generate Model Code”会生成模型类和其他相关Java类。

 

生成的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。

 

 

<待续>

 

 

 

分享到:
评论

相关推荐

    EMF代码生成Merge

    这些模型可以被用来自动生成功能丰富的Java代码,从而减少了手动编写代码的工作量。EMF通过XMI(eXtensible Metadata Interchange)格式来存储模型,这使得模型可以跨工具和平台交换。 在“Merge”这个上下文中,...

    一种CIM模型的Java代码生成方法.pdf

    本文对IEC 61970标准定义的CIM模型进行了介绍,对EMF进行了简单的说明,对CIM模型转换为EMF模型并生成Java代码进行了详细的说明,并给出了在进行CIM模型和CIM XML使用过程中的建议,为CIM模型的落地化实用提供了参考...

    使用EMF开发基于模型的Eclipse插件

    EMF的出现解决了这个问题,它能够将设计阶段创建的模型直接转化为有效的Java代码,从而缩短了从设计到实现的时间,提高了开发效率。 #### EMF的关键作用 EMF不仅支持模型到代码的转换,还支持从代码到模型的逆向...

    java开发工具EMF插件

    2. **代码生成**:一旦模型定义完成,EMF可以自动生成Java类,这些类与模型一一对应,提供了丰富的API供开发者进行操作。此外,还可以生成XML序列化代码,使模型能够在持久化存储和传输中使用。 3. **模型操作**:...

    Eclipse_EMF_JET_自动代码生成技术入门

    Eclipse EMF (Eclipse Modeling Framework) 是一款强大的模型驱动开发框架,而 JET (Java Emitter Templates) 则是其中一种重要的自动代码生成工具。本文将详细介绍如何利用 EMF 和 JET 实现“HelloWorld”代码生成...

    EMF开发过程整合资料

    3. **生成代码(Code Generation)**:EMF可以根据元模型自动生成Java类和其他语言的代码,这些代码提供了对模型实例的访问和操作接口。 4. **序列化(Serialization)**:EMF支持将模型实例序列化为XML格式,方便...

    emf eclipse

    1. "使用 EMF 进行元建模:生成具体、可重用的 Java 代码片段" 这篇文档可能详细讲解了如何使用EMF的代码生成功能,将元模型转换为可执行的Java代码,实现模型到代码的映射,提高代码的标准化和可维护性。...

    EMF 自学笔记5

    EMF提供了强大的代码生成能力,能够根据EMF模型自动生产Java代码。这包括模型类、序列化和反序列化代码、编辑器、视图等。EMF的代码生成机制支持多种模板引擎,如Acceleo、JET(Java Eclipse Template)等,这使得...

    eclipse emf&gef

    通过EMF提供的工具自动生成Java代码。 **1.3.9 编译代码** 使用Eclipse内置的编译器对生成的代码进行编译。 **1.3.10 结论** EMF简化了模型定义的过程,并通过自动生成代码大大减少了开发工作量。 #### 二、EMF...

    EMF Developer Guide

    1. **逆向工程**:可以从现有的Java代码反向生成EMF模型。 2. **动态模型**:在运行时动态创建和修改模型,适用于需求不断变化的项目。 3. **转换和映射**:可以定义模型之间的转换规则,将一个模型转换为另一个模型...

    java EMF,图形开发框架。也可用作eclipse的插件开发

    ANTLR能生成Java、C#、Python等多种语言的解析器和词法分析器,与EMF结合时,可以用于解析DSL或自定义语法,将输入的文本转换为EMF模型,进一步增强EMF的灵活性和扩展性。 在Eclipse插件开发中,EMF扮演了关键角色...

    java源码结构-genModelAddon:EMF插件,用于生成源结构,以将模型生成的代码与覆盖的代码分开

    在使用EMF进行模型驱动开发时,模型会自动生成相应的Java源代码,这些代码通常包含数据结构和基本操作。然而,当开发者需要对生成的代码进行扩展或定制时,往往需要在生成的代码基础上添加额外的功能。`...

    emf-runtime,eclipse modeling framework

    这个环境使得开发者能够在应用程序中使用EMF模型,而无需关心底层实现的复杂性。 描述中提到的"eclipse plugin 最新 emf-runtime 版本2.10.1"表明这是一个针对Eclipse IDE的插件,用于支持EMF 2.10.1版本的开发工作...

    emf教程入门和插件

    EMF的一大优点是它可以自动生成Java代码,这些代码对应于你用Ecore定义的模型。这减少了手动编写重复代码的工作,提高了开发效率。 5. **运行时环境** EMF提供了运行时环境(EMF Runtime),使得模型可以在应用...

    EMF XSD SDK

    3. **Code Generation**:EMF XSD SDK可以根据XSD文件自动生成Java代码,这些代码可以直接用于解析和生成XML文档。 4. **Validation**:SDK提供了XSD验证机制,确保XML实例文档符合指定的XSD模式,有助于确保数据的...

    EMF建模框架

    - **代码生成**: EMF能够根据定义好的模型自动生成相应的Java代码,从而大大减轻了开发者的编码负担。 - **编辑器开发**: EMF不仅可以生成模型代码,还可以生成编辑器代码,这些编辑器可以用来查看和修改模型数据。 ...

    Eclipse开发使用GEF和EMF(IBM 红皮书)中英文对照版

    4. EMF模型的生成与使用:讲解如何定义XML Schema,由EMF自动生成Java类,以及如何在代码中操作这些模型对象。 5. 数据持久化:介绍如何利用EMF的持久化服务将模型数据保存和加载到文件中。 6. 插件开发:讲解如何在...

Global site tag (gtag.js) - Google Analytics