Code Generate of Power Designer

Code 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如下图:

在Object Language选项中是PowerDesigner在代码生成时支持的语言种类.其中java是两个选项,一个是java 另一个是java5.0,两个任意选择一个都可以,如果需要用到java的注解特性那么就选择java5.0,在PowerDesigner12是支持注解的.这里我们选择java,接下来的两个选项在实际使用时没有发现太大的区别,任选一个吧.下面把Name和Code填写成项目的名称和版本就可以了.接下来点击界面上方的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

我们点开已经生成好的模型,里面有很多设置选项,主要包括属性,方法,注释,关联关系等,我们可以通过查看如下图:

选项来查看代码生成的效果,从产生的效果中如果大家注意看可能会发现在关系属性上有

public YiwuUserRefRolePermission[] yiwuUserRefRolePermission;

这样的属性设置.出现数组的这中情况是由于我们生成的OOM中虽然保留了关联关系,但没有具体指明所用的集合,导致在1...*(1对多)关系上PowerDesigner找不到集合类而用数组来代替.解决的办法是我们点开模型之间的Association如下图:

里面的选项都是对关联属性做具体设置的.在下方有个Container Type选项,如下图:

这里就是要设置集合的地方.选择Set集合,下面会自动给出实现类HashSet?.这时在查看Preview选项里面的属性设置就能选择正确的集合类了.同时会产生默认的几个方法,有get set add remove 和获得Iterator的方法,这里有些是不需要的在后面我们会通过修改PowerDesigner的元模型来进行修改.其他还有很多选项都可以对生成Entity进行一些设置,但都不能完全满足我们的需要,所以我们选择对PowerDesigner的原模型进行修改来实现满足要求的Entity. 打开菜单栏 Language -> Edit Current Object Language选项,如下图:

这个界面是扩展模型编辑窗口,点开Profile选项,里面列举的是PowerDesigner的元模型,其中所有元模型都继承于Classifier元模型,在该模型中的Templates里有Source模板,在选择生成java文件时执行的就是该模板,该模板也是对其他各模板的一个组合应用.模板中使用的语言是PD提供的GTL语言.生成Entity文件我们需要修改的模板有Class,Attribute,Association等,主要是为了完成添加JPA设置,get set 方法和关联关系的设置.

修改Attribute:

这个模板是对基础属性进行的设置,如注释,变量可见度等. 首先修改Attribute -> Templates -> definition模板修改为 如下图:

修改的作用是设置属性的可见度,类型的转换和添加

@Property(Property.Source.Page)

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

setterFunction 如下图:

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

修改Class:

这个模板主要是对类的一系列设置,如注释,继承关系和接口实现等. 修改的模板是Class -> Templates -> definition模板修改为 如下图:

其中上部分是通过JPA完成与数据库映射的一些设置,粘贴上去就可以了,然后把需要的变量做下修改.在最下面是对Attribute里的getterFunction和 setterFunction方法的调用.由于里面使用的变量是属于Attribute这个域的,所以在这里对Attributes(Class 的默认属性)集合进行循环就可以得到所有属性来实现get set 方法.由于Entity有继承关系的存在.所以对Templates ->extends模板也做些修改,修改后如下图:

只是简单的添加了else语句和把父类的名称加了进去.

修改Association:

这个模板是针对类之间关系的设置,其中包括:关联对象的get set 方法,JPA的设置等.
修改的模板是Association -> Templates -> Helpers -> Migrate -> accessorsMany模板,如下图:

这个模板是针对关联中需要使用集合的属性的设置模板.默认设置是包括,add,remove,Iterator方法,由于项目中并不需要这些.所以一并删除,然后对get set 进行修改来满足项目需要.
另一个需要修改的模板是Association -> Templates->Helpers ->Migrate ->accessorsOne模板 如下图:

这个模板刚好和上面的模板相反,来设置除集合外的对象关系属性.

总结

通过上述对主要部分的修改,最终基本可以满足项目需要的Entity如下图:

希望本文档能给大家一些启发.有错误的地方请告诉我,好及时修改.修改后的模板文件配置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->浏览你新命名的模版就可以了。

转载于:https://www.cnblogs.com/zhangzt/archive/2011/07/05/2098368.html

Code Generate of Power Designer[转]相关推荐

  1. power designer 设计数据库生成到oracle数据库

    一.概念模型设计 1. 创建工程,创建概念设计模型,在快捷菜单栏调出 palette 找到表格工具,在主界面中创建表格. 2. 创建出的表格,双击进入设计模式 -------------------- ...

  2. power designer 使用vba实现自动化操作学习

    power designer 自带VBA脚本语言,在某些情况下编程可实现自动化操作: 1 创建表和列 代码大体如下: Set mdl = ActiveModel set table = mdl.Tab ...

  3. POWER DESIGNER导出数据字典

    POWER DESIGNER导出数据字典 文章目录 POWER DESIGNER导出数据字典 脚本代码使用方式 打开powerdesigner,点击[工具]菜单,再选择[执行命令]/[编辑/运行脚本] ...

  4. Power Designer反向获取数据库物理模型时Unable to list the users.

    今天在用Power Designer反向数据库时,遇到一个问题,如下: Unable to list the users. 解决方案: 步骤一:选择菜单栏中的Database -> Change ...

  5. SQL Server 2008带字段注释导入Power Designer 9.5

    需要注意的Power Designer 首先得注册到本机连接数据库 具体实现方法如下:首先新建DBMS方便起见,可以先复制Microsoft SQL Server 2000,可以这样操作(tools- ...

  6. Power Designer介绍

    需求分析软件 Power Designer 是Sybase公司的CASE工具集,使用它可以方便地对管理信息系统进行分析设计,他几乎包括了数 据库模型设计的全过程.利用Power Designer可以制 ...

  7. 《Power Designer系统分析与建模实战》——2.1 需求模型简介

    本节书摘来自华章计算机<Power Designer系统分析与建模实战>一书中的第2章,第2.1节,作者:谢星星,朱婵著, 更多章节内容可以访问云栖社区"华章计算机"公 ...

  8. Power Designer逆向操作(从mysql5.0生成数据库的物理模型)

    Power Designer逆向操作(从mysql5.0生成数据库的物理模型) 环境:powderdesigner12.5:mysql5.0 步骤: 1.  为指定的数据库配置MySQL的ODBC数据 ...

  9. oracle 建立一个游戏库,Power Designer怎么新建Oracle数据?建立Oracle数据教程分享

    powerdesigner是一款开发人员常用的数据库建模工具.最近许多小伙伴在使用Power Designer的时候,不知道怎么建立Oracle数据?下面游戏爱好者小编就分享了Power Design ...

最新文章

  1. 【杂】突然有个想法,为了防止公司或其他,监视你的qq或微信,可以做个程序,将信息打乱,分别用qq和微信传输,然后,再还原
  2. linux驱动:音频驱动(一)ALSA
  3. 动态指定超链接参数的几种方法(Passing a JavaScript variable into href of )
  4. 编写同时在PyTorch和Tensorflow上工作的代码
  5. Gradle入门:集成测试
  6. Python学习day2 while循环格式化输出运算符
  7. SAP自学指南:案例公司的需求分析
  8. 如何查看Python的版本
  9. 转:Page.ClientScript.RegisterStartupScript(me.GetType(),script1,scriptalert('111');/script)...
  10. centos 6 apt.sw.be 错误 无法yum安装软件解决方案
  11. 关于java反射里的.class、.getClass()、Class.Forname()
  12. UltraEdit (最新版[25.10.0.62])安装破解
  13. phpQuery采集乱码问题解决方案
  14. 我的世界血量显示的服务器,Minecraft|世纪之都|服务器mod:拔刀剑 工业2 高级太阳能 血量显示 Nei 聊天泡泡等...
  15. gst-launch-1.0用法小记
  16. Swagger文档转Word 文档
  17. Sticky Footer , fixed footer, pinned footer
  18. Python27 No module named PIL解决方法
  19. PROFINET分布式I/O总线模块的优势有哪些?
  20. DataStream API

热门文章

  1. java 知乎面试题_面试题|Java基础17道常见面试题
  2. 记事本快捷键设置 java_Java给JFrame窗口设置热键---不完整记事本
  3. 独家解读 etcd 3.4版本 |云原生生态周报 Vol. 18
  4. MATLAB中cfl,ML4835复合PFC/CFL小型荧光灯基于Matlab的电力电子电路仿真方法
  5. 手机控件查看工具uiautomatorviewer
  6. java如何将线程与cpu的核绑定_JVM(13)年轻代垃圾回收器ParNew是如何工作的?
  7. mybatis中mysql流式读取_MyBatis读取大量数据(流式读取)
  8. linux 动态解析,Linux 动态函式库解析[转]Linux -电脑资料
  9. python可抓取数据包括什么_Python对JS型数据抓取有什么特别好的方法吗,pythonjs型抓取,想写一个爬虫,但是需要抓...
  10. python自动化功能测试_python、selenium自动化功能测试