评论
第一篇写的很不错,真的很跳跃。就我认为,写的还不错,自己的水平有限,不敢妄加评论。
#
re: 续:玩O/R Mapping的体验,及由它想到的,胡思乱想,思维跳跃
好文 有不少启发性的思想.
为什么认为对象模型是3维的呢?
窃以为对象和关系的映射不难,关键在于这层映射需要是透明的.
---
O/R组件,需要抛弃掉所谓的异构数据库的支持(不要得意洋洋的宣称你支持多种数据库,这样的意义并不大),这样才能够做出具有每种数据库的自己特色来,从而发挥各类数据库本身的优势.
---
这个观点也很有意思. 最近有一个朋友说项目中要用nhibernate.原因就是为了实现异构数据库.
我倒是想能不能制定一套o/r m的标准, 这样o/r m的一些最常用的操作方法一致. 具体实现由各人实现.从这个角度达到一定程度的一致性而不是从数据库的角度.
为什么认为对象模型是3维的呢?
窃以为对象和关系的映射不难,关键在于这层映射需要是透明的.
---
O/R组件,需要抛弃掉所谓的异构数据库的支持(不要得意洋洋的宣称你支持多种数据库,这样的意义并不大),这样才能够做出具有每种数据库的自己特色来,从而发挥各类数据库本身的优势.
---
这个观点也很有意思. 最近有一个朋友说项目中要用nhibernate.原因就是为了实现异构数据库.
我倒是想能不能制定一套o/r m的标准, 这样o/r m的一些最常用的操作方法一致. 具体实现由各人实现.从这个角度达到一定程度的一致性而不是从数据库的角度.
#
re: 续:玩O/R Mapping的体验,及由它想到的,胡思乱想,思维跳跃
使用异构数据库与放弃数据库特性支持不能划等号,不信你可以看看Hibernate3。在业务层如果利用数据库特性支持的方法极可能导致将部分业务逻辑迁移到数据库层,这样会使得维护变得如噩梦一般。OR Mapping的目标也不是为了OO而OO,而是让业务层的关注者更专注于业务层内部的东西、领域的东西。
象添加数据库列这样的开发行为即使是不用OR Mapping都是应该尽量避免的,不要将这个责任强加给OR Mapping。
还有,楼主居然用额外的boxing/unboxing来抱怨ADO.Net的DataReader。你难道从来都不先用IsDBNull判断然后再GetInt32吗?
象添加数据库列这样的开发行为即使是不用OR Mapping都是应该尽量避免的,不要将这个责任强加给OR Mapping。
还有,楼主居然用额外的boxing/unboxing来抱怨ADO.Net的DataReader。你难道从来都不先用IsDBNull判断然后再GetInt32吗?
#
re: 续:玩O/R Mapping的体验,及由它想到的,胡思乱想,思维跳跃
你把O/R Mapping,Dataset,未来的FileSystem,数据库对OO的支持搅在一起,做东北乱炖了
Martion Fowler对DataSet的描述已经够权威和详尽了,Dataset一直就不是所谓O/RMapping的解决方案,而现在的Hibernate这样的ORMapping其实未必真的是纯的ORMapping,它也在发展、不断修改和进化,许多时候社区的意见或某个特性会影响它的发展。
不要吧ORMapping神话了,我认为,它只是中间的产物,对于Java平台来说,Hibernate更像ORMapping技术和JDO交叉的一个中间产物,而对于.NET平台来说,它仅是一个Feature,而不是一个技术性的。
我期望和预测.NET平台下的ORMapping技术,应该起源于对DDD(Domain-Driven Design/Development)的支持,以及下一代编程平台的重要技术,也许那时已经不叫ORMapping了,但如果你从DDD的角度来看,你会发现现在的ORMapping一定会继续演化或说它注定是一个中间产物
Metadata + SOA + DDD 会是下一代编程技术和企业级开发的主要技术和方向,下一代或未来的编程技术/平台应该填平现在有关对象、非对象、结构、非结构的混乱争论
Martion Fowler对DataSet的描述已经够权威和详尽了,Dataset一直就不是所谓O/RMapping的解决方案,而现在的Hibernate这样的ORMapping其实未必真的是纯的ORMapping,它也在发展、不断修改和进化,许多时候社区的意见或某个特性会影响它的发展。
不要吧ORMapping神话了,我认为,它只是中间的产物,对于Java平台来说,Hibernate更像ORMapping技术和JDO交叉的一个中间产物,而对于.NET平台来说,它仅是一个Feature,而不是一个技术性的。
我期望和预测.NET平台下的ORMapping技术,应该起源于对DDD(Domain-Driven Design/Development)的支持,以及下一代编程平台的重要技术,也许那时已经不叫ORMapping了,但如果你从DDD的角度来看,你会发现现在的ORMapping一定会继续演化或说它注定是一个中间产物
Metadata + SOA + DDD 会是下一代编程技术和企业级开发的主要技术和方向,下一代或未来的编程技术/平台应该填平现在有关对象、非对象、结构、非结构的混乱争论
#
re: 续:玩O/R Mapping的体验,及由它想到的,胡思乱想,思维跳跃
我认为发表了这么长的文章本身就是一个好的事情,有讨论才有结论吧,我很喜欢 博客园 大多数的同志都比较客观,至少不骂人,继续发扬啊同志们
#
re: 续:玩O/R Mapping的体验,及由它想到的,胡思乱想,思维跳跃
If a o/r mapper do not support some kinds of database,I use it at no time.
#
re: 续:玩O/R Mapping的体验,及由它想到的,胡思乱想,思维跳跃
多谢ccboy的指点,原本就是胡思乱想,这个“想”的过程,写出来的过程,也是我准备理清思路的一个过程。
不过,我写的那堆东西里没有表达清楚我的意思...不过,中间的确也有许多混淆的地方。其实,写这些思想,想表达的一个意思是:在现在的情况下,O/R Mapping可以去研究,可以去关注,但没有必要为了使用而使用它,现在就把它们直接应用在项目中,并不是一件好事。同时也想说明的一点是:对象技术是降低抽象思考难度的手段之一,但它并不是唯一的手段,有时候,非对象化的思考,也许解决问题更加有效。
barton131420所说的,我也想过,觉得虽然特性化的支持会带来迁移上的困难,但这不能成为O/R Mapping组件不能特性化的理由,也许,未来的O/R Mapping组件会有以兼容各种数据库为主的,也有靠发挥某一些数据库特性为主的。毕竟,人是活的,能造出些什么东西也说不一定。希望出现一个能够发挥某种数据库能力的组件出现,也是我个人的想法,不能代表大众,但如果真的有这样一个组件出现,相信支持的人还是很多的,有许多中小型企业,可能几年十几年都会只用一类数据库而不更改,对于这种情况,此类组件是再适合不过的了.
"OR Mapping的目标也不是为了OO而OO,而是让业务层的关注者更专注于业务层内部的东西、领域的东西。 "这个观点我非常赞同。我的意思也是这样,只是不少时候,我问别人为什么要用O/R Mapping工具时,别人总是回答:为了OO。晕菜,不少人不知是受了哪里的毒害,总是一昧追求OO,而忘记了原来是为什么要OO了....
不过,我写的那堆东西里没有表达清楚我的意思...不过,中间的确也有许多混淆的地方。其实,写这些思想,想表达的一个意思是:在现在的情况下,O/R Mapping可以去研究,可以去关注,但没有必要为了使用而使用它,现在就把它们直接应用在项目中,并不是一件好事。同时也想说明的一点是:对象技术是降低抽象思考难度的手段之一,但它并不是唯一的手段,有时候,非对象化的思考,也许解决问题更加有效。
barton131420所说的,我也想过,觉得虽然特性化的支持会带来迁移上的困难,但这不能成为O/R Mapping组件不能特性化的理由,也许,未来的O/R Mapping组件会有以兼容各种数据库为主的,也有靠发挥某一些数据库特性为主的。毕竟,人是活的,能造出些什么东西也说不一定。希望出现一个能够发挥某种数据库能力的组件出现,也是我个人的想法,不能代表大众,但如果真的有这样一个组件出现,相信支持的人还是很多的,有许多中小型企业,可能几年十几年都会只用一类数据库而不更改,对于这种情况,此类组件是再适合不过的了.
"OR Mapping的目标也不是为了OO而OO,而是让业务层的关注者更专注于业务层内部的东西、领域的东西。 "这个观点我非常赞同。我的意思也是这样,只是不少时候,我问别人为什么要用O/R Mapping工具时,别人总是回答:为了OO。晕菜,不少人不知是受了哪里的毒害,总是一昧追求OO,而忘记了原来是为什么要OO了....
写的不错,感觉有较高的实践经验,但如从工程角度来看,oo是必要的,O/R Mapping也是必需的。它的意义不仅在于实现,同时在于交流是相同思想的交流,这一层来看起到语言的作用,要成为一个通用的语言,来描述现实的一切,还依赖于工具的发展。