对于很多使用过PowerDesigner的人来讲,他们使用PowerDesigner就是使用它来进行数据库物理建模,创建数据库表对象、建立表与表之间的关联关系、创建索引,最后,使用PowerDesigner的Generate DataBase功能生成数据库的DDL语句,最后,将这些DDL语句使用数据库工具进行导入。使用再高级一点的话,我们还可以创建数据源,并在PowerDesigner建立与数据源的连接后,最后,直接通过Generate DataBase的ODBC Generation功能直接在数据库当中建表、建外键、建约束、建索引等数据库对象。
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选择生成的代码,将可以自动生成代码,如下图所示: