- CDM: 用于从业务角度识别实体、属性和关系,是高层次的、与实现技术无关的模型,它更侧重于数据。
- OOM: 用于设计类、接口、属性、方法以及它们之间的关系(继承、实现、关联等),这直接面向 Java 代码的生成,我们通常说的“Java类”主要在这里设计。
下面我将分步介绍如何使用 PowerDesigner 的 OOM 模块来创建和生成 Java 类。

第一部分:使用 Object-Oriented Model (OOM) 设计 Java 类
这是最直接、最常用的方法。
步骤 1:创建新的 OOM 模型
- 打开 PowerDesigner。
- 选择
File->New Model。 - 在弹出的对话框中,选择
Model types下的Object-Oriented Model。 - 给模型命名,
MyJavaProject。 - 在
Diagram下拉菜单中选择Class Diagram。 - 确保
Target Language已选择为Java,PowerDesigner 会根据此目标语言来调整生成选项和代码风格。 - 点击
OK。
步骤 2:创建和配置类
- 在右侧的
Palette(工具面板)中,找到Class工具(一个矩形框图标)。 - 在画布上点击一下,创建一个新的类,默认名称可能是
Class_1。 - 双击这个类,打开
Class Properties(类属性)窗口。 - 在
General选项卡中,你可以设置:- Name: 类名(
User),这是代码中使用的名称。 - Stereotype: 类的构造型(
entity,value object,service),用于标记类的角色。 - Visibility: 可见性(
Public,Private,Protected,Package)。 - Abstract: 是否为抽象类。
- Final: 是否为 final 类。
- Name: 类名(
- 在
Attributes选项卡中,添加类的属性(成员变量):- 点击
Add a Row按钮。 - Name: 属性名(
userId)。 - Type: 属性类型(
Long,String),可以直接输入或点击旁边的按钮从类型列表中选择。 - Visibility: 可见性(通常是
private)。 - Static: 是否为静态变量。
- Final: 是否为 final 变量。
- Default Value: 默认值。
- Stereotype: 属性的构造型(
@Id,@Column(name="user_id"))。
- 点击
- 在
Operations选项卡中,添加类的方法:- 点击
Add a Row按钮。 - Name: 方法名(
getUserId)。 - **Return Type
返回类型(例如Long`)。 - Visibility: 可见性(通常是
public)。 - Static: 是否为静态方法。
- Final: 是否为 final 方法。
- Stereotype: 方法的构造型(
@Override)。 - 在
Arguments子选项卡中,可以添加方法的参数。
- 点击
步骤 3:建立类之间的关系
OOM 支持多种面向对象的关系,这在 Palette 中都有对应的工具。
- Association (关联): 最常见的关系,表示一个类知道另一个类。
- 从一个类拖拽到另一个类。
- 双击关系线,打开
Association Properties。 - 可以设置名称、角色、可见性、多重性(
.*)等。
- Generalization (泛化/继承): 表示 "is-a" 关系。
- 使用
Generalization工具(空心三角箭头)。 - 从子类拖拽到父类。
- 使用
- Realization (实现): 表示类实现接口。
- 使用
Realization工具(空心虚线三角箭头)。 - 从实现类拖拽到接口。
- 使用
- Aggregation / Composition (聚合 / 组合): 表示 "has-a" 关系,是特殊的关联。
- 使用
Aggregation(菱形空心箭头)或Composition(菱形实心箭头)工具。 - 从整体类拖拽到部分类。
- 使用
步骤 4:生成 Java 代码
这是最关键的一步,将你的模型转换为实际的 .java 文件。
- 在主菜单中选择
Language->Generate Java Code。 - 第一次使用时,需要进行配置:
- 在弹出的
Generation窗口中,确保Target选项卡下的Directory设置为你想要保存代码的文件夹。 - 切换到
Diagrams选项卡,选择你想要生成代码的图(默认是All diagrams)。 - 切换到
General选项卡,这里有很多重要的选项:- Generate new files: 勾选此项,PowerDesigner 会根据模型创建新文件。
- Existing files handling: 当文件已存在时的处理方式(
Keep existing,Overwrite,Rename)。 - Generate documentation: 是否生成文档注释。
- Package: 可以设置一个基础包名,所有生成的类都会放在这个包下。
- Generate getters and setters: 自动生成属性的 getter 和 setter 方法。
- Generate constructors: 自动生成构造函数。
- Generate empty constructors: 生成无参构造函数。
- Generate toString(): 生成
toString()方法。 - Generate equals() and hashCode(): 生成
equals()和hashCode()方法。
- 在弹出的
- 配置完成后,点击
OK,PowerDesigner 将开始生成代码,并在完成后显示一个日志窗口。
第二部分:从 Conceptual Data Model (CDM) 生成 Java 类
这种方法非常适合基于数据库模型来创建实体类(JPA Entity)。

步骤 1:创建 CDM 模型
File->New Model。- 选择
Conceptual Data Model。 - 命名模型,
UserDomainModel。
步骤 2:设计实体和属性
- 使用
Entity工具在画布上创建实体(User)。 - 双击实体,打开
Entity Properties。 - 在
Attributes选项卡中添加属性(id,username,email)。 - 为每个属性设置数据类型(
Integer,Char(50))。
步骤 3:建立实体关系
- 使用
Relationship工具连接实体(User和Address是一对多关系)。 - 双击关系线,在
Cardinalities选项卡中设置关系的基数(One对Zero or more)。
步骤 4:从 CDM 生成 OOM,再生成 Java 代码
这是连接 CDM 和 Java 的桥梁。
- 在 CDM 模型窗口中,选择
Language->Generate Object-Oriented Model。 - 在弹出的窗口中:
- 给新的 OOM 模型命名(
UserOOM)。 - 选择目标语言为
Java。 - 关键步骤:在
Mapping选项卡中,你可以配置 CDM 中的元素如何映射到 OOM 中的元素。- 你可以设置
Entity->Class,Attribute->Attribute,Identifier->Primary Key,并可以指定如何生成 JPA 注解(如@Id,@GeneratedValue,@Entity)。
- 你可以设置
- 给新的 OOM 模型命名(
- 点击
OK,PowerDesigner 会根据你的 CDM 自动创建一个 OOM,其中包含相应的类、属性和关系。 - 你就可以像第一部分描述的那样,从这个新生成的 OOM 中导出 Java 代码了。
第三部分:反向工程 - 从现有 Java 代码生成模型
如果你有一套已经写好的 Java 代码,并希望用 PowerDesigner 来可视化和管理它,可以使用反向工程功能。
- 创建一个新的 OOM 模型 (
File->New Model->Object-Oriented Model)。 - 在主菜单中选择
Language->Reverse Engineer->Java Component。 - 在弹出的窗口中:
- Type of Input: 选择
Directory并
- Type of Input: 选择

