900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > java生成emf_推荐一款java代码生成的插件EMF

java生成emf_推荐一款java代码生成的插件EMF

时间:2021-05-31 06:33:58

相关推荐

java生成emf_推荐一款java代码生成的插件EMF

什么是EMF?

EMF (Eclipse Modeling Framework) 是基于Eclipse的模型化框架。

为什么要使用EMF?

首要原因是EMF提供了非常清晰,可维护性很强的一套模型化方案和工具,通过定义meta model,可以自动生成实际模型(实际模型可以理解为是meta model的一个实例)。Meta model描述了模型的结构,EMF使用XMI来持久化meta model。另一个主要的原因是伴随着Eclipse近来的发展,已经出现了许多非常好用的基于EMF的工具和应用,比如Teneo可以把EMF和Hibernate有效地mapping起来,Xtext可以基于EMF的模型定义一套自己的编程语言(更常见的是结合abstract syntax tree定义一套自己的query language)。

在Eclipse Indigo中的安装link:

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。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。