PowerDesigner对很多很多应用服务器,外部工具,开源框架有着很好的支持,这个是PowerDesigner的最大优势。默认情况下,这些扩展模块都没有启用,我们可以使用 Extended Model来启用相应的模块支持,比如Hibernate。这篇文章将使用 Object-Oriented Model结合Physical Data Model,并启用 Hibernate Extended Model来进行建模,并最终生成相应的Java代码、Hiberante配置文件和映射文件、DataBase DDL语句等。
首先:我们先创建新的 Object-Oritented Model,将Object Language选项当中Java,First diagram选择为 Class Diagram,如下图所示:

配置完后,点击 Extended Model Definitions面板,在扩展的模型当中选择Hiberante,最后点击确定按钮,如下图所示:

第二 ,在 Class Diagram当中创建一个新的Package,取名为zizz,并进入zizz package当中的Class Diagram,创建新的Class,新的Class名为User,并在User当中创建新的attribute,如下图所示:

第三,创建新的 Physical Data Model,创建可以有两种方式:第一种是通过File-->New创建新的 Physical Data Model;第二种是通过PowerDesigner提供的Model Transfer功能,将 Class Diagram Model转化为 Physical Data Model,以下图表显示出PowerDesigner当中Model的关联关系:

第一种方式:点击File-->New,在弹出的对话框当中选择Physical Data Model,选择相应的数据库,本次采用的是Oracle 10g数据库,最后点击确定,如下图所示:

接着,在Physical Diagram当中创建新的数据库表,表名为:T_USRE,表列的描述如下图所示:

第二种方式是使用PowerDesigner的 Model Transfer功能,将 Object-Oriented Model转化为 Physical Data Model。点击 Tools-->Generate Physical Data Model菜单,在弹出的对话框当中选择相应的数据库。如下图所示:

PowerDesigner将会自动为我们创建一个新的 Physical Data Model,并且,自动创建了一张名为User的表,并且自动创建列。创建结果如下图所示:

创建完之后,我们应该按照我们的命令规范对我们的表名、列名做相应的修改,最后,还要将数据精度做一下调整。PowerDesigner的 Model Transfer功能非常强大,它不仅能够帮我们创建一个新的数据库物理数据模型,还可以帮我们更新相应的数据库物理模型。
本次将使用第一种创建Physical Data Model的方式。
第四,打开 Class Diagram视图,双击 User Class,将弹出如下对话框

点右右下角的More,将所有标签页显示出来,在标签页当中选择Mapping,如下图所示:

点击创建按钮图标,创建新的数据源(这里指的数据源即新建的数据库物理数据模型),弹出的对数据源创建向导话框,在对话框当中的 Data Source 输入任意的名称,如你的项目名称,如下图所示:

点击“下一步”按钮,在弹出的对话框当中选择我们创建的 Physical Data Model,接着,点击“完成”按钮,如下图所示。

点击完成按钮后,将弹出如下对话框,在对话框当中选择User对象的Mapping表格,最后点击“ 确定”按钮。

在新的Mapping当中,我们可以看到,对象User将会Mapping到T_USER表。那数据库列应该怎么进行映射呢?假如数据库的列名跟对象的属性名一致,那我们可以不需要进行列的配置,因为Hibernate本身就可以支持这一点,那如果列不一致呢?那我们应该怎么办?在powerdesigner配置可以有两种方式, 第一种,通过attribute mapping进行映射,如下图所示:

第二种是通过Mapping Editor来建立数据库列与类属性之间的映射。点击: tools-->Mapping Editor,将弹出如下的对话框:

选择某一列,从左边拉到右边的指定列,将自动建立列与属性的关联关系,最后点击确定“按钮”。如下图所示:

最后,我们可以从Mapping当中看到数据库列与类属性的映射关系。如下图所示

第五,生成代码。点击 Language-->Generate Java Code生成Java代码。在弹出的对话框Option标签当中选择需要生成的类型及在Generated Files选择生成的代码,将可以自动生成代码,如下图所示:

