NHibernate中的SchemaExport

昨天,在看hibernate文档的时候,看到了这样一段:
   You should now create this table in your database manually, and later read Chapter 15, Toolset Guide if you
want to automate this step with the SchemaExport tool. This tool can create a full SQL DDL, including table
definition, custom column type constraints, unique constraints and indexes.
  
  这个时候才发觉自己以前有些地方想偏了。

   之前,在使用NHibernate的时候,一般是在powerdesigner中建立逻辑模型,然后根据这个逻辑模型生成OO模型和数据库物理模型,在OO模型上生成C#代码和map文件,数据库物理模型上生成SQL脚本。这样做的一个很大的问题就是在修改模型的时候,只能修改逻辑模型,然后再重新生成OO模型和数据库模型,这样非常麻烦,可能最后的结果将导致 :不再维护模型,而直接修改代码和数据库。这样,完全违背了MDA的原则。

   SchemaExport其实是MDA思想的部分体现,我们在实现业务逻辑的时候,只需要处理业务对象,至于其如何存储则不用关心,这样,做到了真正的与数据库无关。

  但是 ,在NHibernate中SchemaExport的功能还不是很强,它的功能仅仅局限于 根据map文件,自动生成Creat表的SQL脚本,如果修改了map文件,那么对应SQL要重新生成,也就是说没有alter table,只有 create table,很多的数据都将丢失。

  目前,感觉将SchemaExport放在unit test中更加可行一些,实际的项目中可能不会用到。

  去年看过C#Builder里面有MDA的功能,感觉不错,可是我不太喜欢它的编辑器,不知道有没有人真正用它?


posted on 2004-06-28 13:48  wljcan  阅读(4514)  评论(6编辑  收藏  举报

导航