O/R Mapper和代码生成器有什么不同?
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
http://blog.devep.net/virushuo/2004/01/05/or_mapper.html
原文:http://dotnetjunkies.com/weblog/seichert/posts/4699.aspx
上一个贴子里面,我大概介绍了O/R Mapper。一些回复认为O/R Mapper类似于代码生成器。
O/R Mapper和代码生成器有什么不同呢?
代码生成器使用一些设置好的模版来生成一串完成的代码。当一些部分有所变化的时候,需要代码生成器重新生成全部代码。
O/R Mapper是一种组件framework,这种framework可能使用运行时代码生成方式来辅助从对象到关系数据库的映射,但是它不仅仅只是把DAL代码生成出来。让我们来用一个简单的例子说明。
在我的O/R Mapper中,我使用了运行时代码生成的方式。生成的代码不会被使用Mapper的开发者看到或人工编译。下面我们一步一步来看我的mapper是怎么样作代码生成的。
第
一步,如前所述,生成传统代码,生成器建立对象和对象的属性和进行mapping所需要的属性。对象建立之后就可以被编译到程序集中了。这时候,还不存在
用于从数据库保存,删除,读取对象的代码。当应用程序运行时,一旦程序保存对象信息,动态代码和SQL即被framework生成,并且被编译为动态程序
集。动态程序集被缓存,然后被framework用来处理并发请求,保存对象数据。
- 开发者不需要看到,也不要关系这部分代码。
- 开发者不需要用另一个工具来生成代码。
- 生成出的程序集永远是新的。
总之,代码生成器就是代码生成器,但O/R mapper可能会在其framework中使用运行时代码生成器 辅助对象到数据库映射,但,他不仅仅是代码生成器。
你不会看到他生成的代码(一般来说),他减轻了开发者编写和管理DAL代码的负担。与其考虑写(或使用代码生成器生成)保存,删除,读取的代码,不如多去考虑业务逻辑和程序需求,让O/R Mapper去做那些事情吧!





Comments
这个,只能说是关系数据库到oo数据库的过渡方法。
我在《oo软件项目求生法则》中看到了一些对于oo数据库的描述,jdo也是在向oo数据库发展。
Posted by: yayv | January 9, 2004 11:05 AM