对NHibernater的一个误解

这些天来一直在看hibernate的相关文档,发现自己以前对hibernate的了解不准确。

在刚开始使用nhibernate的过程中,我写了这篇用Powerdesigner生成NHebernate的MAP文件 。其中的主要思想是通过 Powerdesigner的逻辑模型生成C#的OO模型,然后再根据OO模型生成hbm.xml文件。使用这种方式的好处是:数据层的C#代码和map都是自动生成的,但是其中有一个很大的问题:在从逻辑模型生成C#OO模型的时候,逻辑模型中的很多信息都已丢失,如文本长度、索引、多对多的关系等等,这样导致映射文件的信息不完全。

其实,hibernate更应该是一种MDA的工具,正确的方式应该是通过逻辑模型来生成数据库模型和对象模型,而不是通过物理模型或者OO模型来生成的。 在Java的hibernate中,提供了很多工具,如:Schema(map文件和代码之间相互生成的工具)、Middlegen(从数据库结构生成map文件)、AndroMDA(从UML图和xml文件中生成代码),我个人觉得AndroMDA应该是一个比较好的方向(目前还没有用过)。飞鹰以前做过一个从数据库中生成map文件的工具,功能应该和Middlegen类似,应该也偏离了hibernate的方向.






原文地址:https://www.cnblogs.com/wljcan/p/21228.html