技术开发 频道

基于Jazz技术构建企业级Web2.0应用(1)

    定义模型

    New->Source Folder取名为src-gen在plug-in根目录下同时创建一个名为models的子目录(如图11所示), 然后在其中创建一个新的EMF ecore模型。New->Other...->Example EMF Model Creation Wizards->Ecore Model给模型取名为petstore.ecore,其余选项保持默认值即可。


    图 11. 设置生成代码的目录

    现在打开这个模型,你将看到一个树形结构的Ecore模型编辑器。首先你需要把Jazz提供的repository.ecore加入到petstore Ecore模型的资源引用中,右键点击编辑器里的任意节点,在上下文菜单中选择Load Resource...在选择资源的对话框里填入如下的URI,这个 URI代表repository.ecore在你的目标平台中的位置platform:/plugin/com.ibm.team.repository.common/models/repository.ecore

    注意:如果你的目标平台没有找到repository.ecore,你需要手动的把com.ibm.team.repository.common插件手动import到你的workspace中。

    然后点击OK按钮.这时你将看到repository.ecore被成功的引入到Ecore编辑器中。然后选择EPackage节点(初始时是null),点击右键并选择Show Properties View。你将通过属性编辑窗口来编辑每个节点的属性. 我们首先为EPackage节点设置如下属性值,如图12所示。


    图 12. EPackage节点属性

    在EPackage节点下添加EAnnotation子节点 (右键点击PetStore EPackage然后选择New Child->EAnnotation),并给它设置如下的source和详细的keys 和values:

EAnnotation
Source
teamModel
Details Entry
Key
clientProject
Value
com.ibm.petstore.common
Details Entry
Key
clientSrcFolder
Value
src-gen
 
 
 
 
 
 
 
 
 
 

    clientProject设为com.ibm.petstore.common表示将来存放生成代码的project,clientSrcFolder表示自动生成代码放入的源代码目录,这里选择之前建好的src-gen中,目的是把自动生成的代码分隔开进行管理。

    现在在根EPackage下添加一个名为petstore的子EPackage,并设置如下的属性值:


    图 13. EPackage节点属性

    注意:Ns URI的值必须与组件名一致,所以这里必须是com.ibm.petstore

    在这个EPackage下添加一个名为teamPackage的EAnnotation,并给它设置如下的Source值和详细的keys和values:

   

EAnnotation
Source
teamPackage
Details Entry
Key
clientBasePackage
Value
com.ibm
Details Entry
Key
clientPackageSuffix
Value
common.model
Details Entry
Key
dbMapQueryablePropertiesOnly
Value
true

    clientBasePackage表示存放生成代码的package前缀,clientPackageSuffix表示存放生成代码的package后缀,这样在加上EPackage petstore,最终生成的代码将会被放入到com.ibm.petstore.common.model package里。dbMapQueryablePropertiesOnly设为true表示在生成的代码里,只把queryable标签设为true的属性映射到数据库中并在该持久化类的QueryModel里提供对应的查询字段。

    至此,你已经完成了建立所有持久化模型都必须经过的步骤。此时的ecore模型应该如图14所示:

    图 14. ecore模型

    然后,我们开始为Category, Product, Seller三个持久化类建立对应的EClass。我们将以Category的建立过程为例来说明整个过程,读者可以参照这个过程自行建立Product和Seller对应的EClass。

    teamPackage是我们添加EClasses的地方,在EClass里需要定义你希望 存储在Jazz储存库中的持久化对象、对象具有哪些属性、属性都有什么类型和特性,这些都是通过加上一些特殊的Jazz标签完成的,Jazz在以后生成具体的SQL DDL去建表时会去参考这些标签值。

    首先我们在teamPackage里面创建一个名为Category的EClass,并指定它的ESuper Type为SimpleItem,(这里使用SimpleItem而非Auditable,因为我们不需要 保存Category的历史信息)然后我们为Category添加一个名为id的EAttribute到这个EClass中,并设置如下的属性:

Name
id
EType
EInt
Lower Bound
1
Default Value Literal
0

    EType信息表示属性的类型,Lower Bound表示最少出现的次数,填1表示这个这个属性是必须的,填0表示这个属性可选,Default Value Literal表示属性的默认值。然后我们还需要往EAttribute id里添加一个名为queryableProperty的EAnnotations注解,并设置如下的source值和详细的keys和values:

EAnnotation
Source
queryableProperty
 
Details Entry
Details Entry
Key
Key
unique
visibility
Value
Value
 true
 DEFAULT

    unique设为true表示id这个属性在数据库表中必须唯一,visibility设为DEFAULT表示这个属性在生成的POJO中可见。

    然后添加一个名为name的EAttribute到这个EClass中,并设置如下的属性:

Name
name
EType
EString
Lower Bound
0

0
相关文章