zoukankan      html  css  js  c++  java
  • Code Generate of Power Designer[转]

    Code Generate of Power Designer

    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermatCode Generate of Power Designer

    说明

    本文档是通过PowerDesigner自动生成Entity的一个功能实现说明文档.
    通过PowerDesigner来自动生成Entity个人感觉是非常实用的,可以实现Entity的属性定义,get set 方法,类的继承以及接口实现,JPA
    形式实现与数据库的字段映射和表之间的关联关系映射.通过该功能大家基本上可以从手写Entity的工作中解脱出来,而且通过PowerDesigner来自动生
    Model也肯定会比手动来完成Entity效率上要高一些.
    实现目的和效果都说了,接下来让我们一下看看具体该如何实现?

    功能实现

    首先介绍下PowerDesigner几种模型.
    PowerDesigner共有4种模型:概念数据模型 (CDM)物理数据模型 (PDM) 面向对象模型 (OOM) 业务程序模型 (BPM)
    在这里我们需要做的是,先创建PDM,通过PowerDesigner Tools -> Generate Object-Oriented Model操作来自动生成OOM.也可以跳 过第一步,直接手动创建OOM.最后的Entity就是通过OOM来实现的.

    通过PDM生成OOM

    在这里我把生成过程中需要设置和注意的地方做下简单说明.
    前面讲过生成是通过PowerDesigner Tools -> Generate Object-Oriented Model操作来完成的.该操作点击进入后是OOM Generation Options界面.里面是两个单选框,一个是创建新的OOM 另一个是修改已经存在的OOM,在这里我们选择创建一个新的OOM如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    Object Language选项中是PowerDesigner在代码生成时支持的语言种类.其中java是两个选项,一个是java 另一个是java5.0,两个任意选择一个都可以,如果需要用到java的注解特性那么就选择java5.0,PowerDesigner12是支持注解的.这里我们选择java,接下来的两个选项在实际使用时没有发现太大的区别,任选一个吧.下面把NameCode填写成项目的名称和版本就可以了.接下来点击界面上方的Detail选项,里面有四个选项,分别是Check Model,Save generation dependencies,O/R Mapping,Convent names into codes.Check Model 默认是打勾的,它在生成OOM时会对模型的格式进行检测.如果PDM有错误的地方在下方Check Model控制台中会有错误提示信息.后面三个选项除了O/R Mapping 不选外其他的都选上,O/R Mapping是在生成hibernate Mapping文件时需要设置的.现在生成OOM的基本设置就完成了.点确定就会自动生成OOM.

    通过OOM生成Entity

    我们点开已经生成好的模型,里面有很多设置选项,主要包括属性,方法,注释,关联关系等,我们可以通过查看如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    选项来查看代码生成的效果,从产生的效果中如果大家注意看可能会发现在关系属性上有

      public YiwuUserRefRolePermission[] yiwuUserRefRolePermission;

    这样的属性设置.出现数组的这中情况是由于我们生成的OOM中虽然保留了关联关系,但没有具体指明所用的集合,导致在1...*(1对多)关系上PowerDesigner找不到集合类而用数组来代替.解决的办法是我们点开模型之间的Association如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    里面的选项都是对关联属性做具体设置的.在下方有个Container Type选项,如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    这里就是要设置集合的地方.选择Set集合,下面会自动给出实现类HashSet?.这时在查看Preview选项里面的属性设置就能选择正确的集合类了.同时会产生默认的几个方法,get set add remove 和获得Iterator的方法,这里有些是不需要的在后面我们会通过修改PowerDesigner元模型来进行修改.其他还有很多选项都可以对生成Entity进行一些设置,但都不能完全满足我们的需要,所以我们选择对PowerDesigner的原模型进行修改来实现满足要求的Entity. 打开菜单栏 Language -> Edit Current Object Language选项,如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    这个界面是扩展模型编辑窗口,点开Profile选项,里面列举的是PowerDesigner元模型,其中所有元模型都继承于Classifier元模型,在该模型中的Templates里有Source模板,在选择生成java文件时执行的就是该模板,该模板也是对其他各模板的一个组合应用.模板中使用的语言是PD提供的GTL语言.生成Entity文件我们需要修改的模板有Class,Attribute,Association,主要是为了完成添加JPA设置,get set 方法和关联关系的设置.

    修改Attribute:

    这个模板是对基础属性进行的设置,如注释,变量可见度等首先修改Attribute -> Templates -> definition模板修改为 如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    修改的作用是设置属性的可见度,类型的转换和添加

    @Property(Property.Source.Page)

    这里的设置只能设置OOM中的基础属性,通过关联关系产生的对象属性需要在Association中进行设置.添加get set 方法,Attribute -> Templates中添加两个方法 getterFunction 如下图:

    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat

    setterFunction 如下图:

    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat

    这两个方法将在修改Class的时候使用到.

    修改Class:

    这个模板主要是对类的一系列设置,如注释,继承关系和接口实现等修改的模板是Class -> Templates -> definition模板修改为 如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    其中上部分是通过JPA完成与数据库映射的一些设置,粘贴上去就可以了,然后把需要的变量做下修改.在最下面是对Attribute里的getterFunction setterFunction方法的调用.由于里面使用的变量是属于Attribute这个域的,所以在这里对Attributes(Class 的默认属性)集合进行循环就可以得到所有属性来实现get set 方法.由于Entity有继承关系的存在.所以对Templates ->extends模板也做些修改,修改后如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    只是简单的添加了else语句和把父类的名称加了进去.

    修改Association:

    这个模板是针对类之间关系的设置,其中包括:关联对象的get set 方法,JPA的设置等.
    修改的模板是Association -> Templates -> Helpers -> Migrate -> accessorsMany模板,如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    这个模板是针对关联中需要使用集合的属性的设置模板.默认设置是包括,add,remove,Iterator方法,由于项目中并不需要这些.所以一并删除,然后对get set 进行修改来满足项目需要.
    另一个需要修改的模板是Association -> Templates->Helpers ->Migrate ->accessorsOne模板 如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    这个模板刚好和上面的模板相反,来设置除集合外的对象关系属性.

    总结

    通过上述对主要部分的修改,最终基本可以满足项目需要的Entity如下图:
    Code Generate of Power Designer - eafy.ye - 博客园 - littlefermat - littlefermat
    希望本文档能给大家一些启发.有错误的地方请告诉我,好及时修改.修改后的模板文件配置java.xol

    模版配置文件的使用方法

    建议,下载java.oxl 然后保存文件到下面目录:Sybase\PowerDesigner 12\Resource Files\Object Languages\命名java_infowarelab.oxl,用记事本打开找到

    <?PowerDesigner AppLocale="UTF16"Code="Java"Family="Java"

    SubFamily="J2EE"signature="XOL_XML"version="12.0.0.1700"?>

    修改name属性为任何你想要的就可以了
    然后pd总选择language->change current object language->浏览你新命名的模版就可以了。


  • 相关阅读:
    day 13 闭包函数,装饰器,迭代器
    day12 可变长参数、函数对象、函数的嵌套、名称空间和作用域
    day11 文件的高级应用、文件修改的两种方式、函数的定义、函数的三种定义方式、函数的调用、函数的返回值、函数的参数
    数字类型内置方法
    基本语法之for循环
    基本语法之while循环
    python基本语法(3)
    python基本语法(2)
    python基本语法(1)
    编程及计算机组成
  • 原文地址:https://www.cnblogs.com/zhangzt/p/2098368.html
Copyright © 2011-2022 走看看