顺便说一下一个老帖子关于domain object的讨论
顺便说一下一个老帖子:http://www.blogjava.net/GandofYan/archive/2006/05/30/48954.html关于domainobject的讨论,其中的领域逻辑用E-R建模来表示是这样的:
Bid的建立需要满足3个约束条件,仅此而已。
那个贴子中有这样一句"this.getBids().add(newBid);在没有Hibernate/JDO这类可以实现“透明的持久化”工具出现之前,这类domainlogic是无法实现的"。事实上,如果采用E-R建模,这个问题压根就不存在,至少用这个例子来说明透明持久化(再说一遍透明持久化的本质是缓存)的优点是很不恰当的,Hibernate解决了一个它自已创造出来的问题,因为E-R建模不象对象建模一样存在一对多这个概念,不存在由一方来维护关联这个问题。一对多关联的本质是一方维护着一个内存缓存表(set,list,array,bag),在运行期默认要将多方载入这个缓存,结束时将缓存清空并刷新到数据库,这是一种提前的性能优化(利用二级缓存),可能造成性能问题(不必要的加载)和增加编程复杂性。好比“高三一班加入一名新生"用E-R概念来表述就是newStudent("张三").setClass("高三一班");而用一对多关联表述就变成了getAllStudents("高三一班").add(newStudent("张三")),问题是getAllStudents和加入新生这两个逻辑是不相干的,加入新生就必须getAllStudents?未必。