其他映射模式的支持
PowerDesigner还可以通过嵌入来支持细粒度的转换。比如,在员工信息类中,我们有一个属性家庭住址,该属性是对象类型,类型为地址类。我们不想为地址类单独生成表,只想把它嵌入到员工信息表中。在PowerDesigner中,我们可以通过,设置属性的类生成类型为嵌入来实现这一点。
自动生成面向对象模型
PDM到OOM的转换适合于自底向上的开发过程,对于以数据为中心的应用系统或者访问已有数据库上的应用系统,这种转换是非常有用的。PDM到OOM的转换类似于OOM到PDM转换的逆过程,PowerDesigner会把PDM中的元素转换成OOM中对应的元素。但是其中继承的转换是不可逆的,因为PDM中没有子类的概念,所以用户需要手工更改生成后的对象模型。
模型和并
PowerDesigner提供了模型合并功能,支持迭代式的模型自动转换。自动生成的目标模型并不一定完全满足我们的需要,我们常常要对它进行修改,但是源模型也发生了改变,有时我们既想同步目标模型和源模型,又想保持我们对目标模型所作的修改,这时模型的合并显得非常重要。通过PowerDesigner的模型合并窗口,用户可以了解到重新生成的模型和当前的目标模型的差异,从而可以根据自己的需要,选择是否保持或者覆盖以前的模型。
用户还可以通过PowerDesigner的流体模型了解源模型和目标模型间的转换关系。
自动代码生成
从上面可以看到,通过PowerDesigner,设计人员可以方便的完成应用程序的设计、数据库设计以及O/R映射定义,那么编程人员通过编码实现这些设计。对于O/R映射的实现,我们可以看到,不管使用什么技术,编码人员都需要进行大量的工作。
我们知道MDA的目标就是把现有的以代码为中心的开发模式转换成以模型为中心的开发模式,让模型生成代码,把开发人员从繁琐的编码工作中解放出来,从而专注于系统的架构和业务逻辑上。PowerDesigner通过其可扩展性提供了对于MDA的支持。在PowerDesigner中,所有的模型都是通过元模型进行描述的,可以通过GTL(通用模板语言)和VBScript来访问这些元模型。那么我们可以通过元模型的信息来做他想要做的事,包括自动代码生成。
PowerDesigner已经提供了对于主要持久化技术的支持,Hibernate、EJB 3、NHibernate、ADO.Net等,用户可以直接使用这些扩展模型。除了O/R映射实现代码,这些扩展模型还可以生成测试代码,方便用户对生成的代码进行测试。用户只需要添加相应的扩展模型,并且通过扩展属性设置特定扩展模型所需的信息,就可以实现自动代码生成。下图是应用Hibernate扩展模型生成映射文件的预览窗口。
用户也可以对这些扩展模型进行定制或者开发他自己的扩展模型,以满足自己的需要。关于如何扩展PowerDesigner,可以参阅PowerDesigner用户文档和高级使用手册。
结论
我们可以看出,通过PowerDesigner的模型映射,设计人员可以很方便的定义O/R映射,不管是手工的方式还是通过自动模型转换。O/R映射元数据同模型保存在一起,保证了一致性,方便的和模型同步,提高了可维护性。通过自动代码生成,编码人员不再需要进行繁琐、重复性的劳动,提高了开发的生产率。