顺便说一下一个老帖子关于domain object的讨论

顺便说一下一个老帖子:http://www.blogjava.net/GandofYan/archive/2006/05/30/48954.html关于domain object的讨论,其中的领域逻辑用E-R建模来表示是这样的:
[img]http://dl2.iteye.com/upload/attachment/0122/6088/a708dcbb-63e9-3218-ac86-14aaca1c1f4b.png[/img]
Bid的建立需要满足3个约束条件,仅此而已。

那个贴子中有这样一句 "this.getBids().add(newBid); 在没有Hibernate/JDO这类可以实现“透明的持久化”工具出现之前,这类domain logic是无法实现的"。事实上,如果采用E-R建模,这个问题压根就不存在,至少用这个例子来说明透明持久化(再说一遍透明持久化的本质是缓存)的优点是很不恰当的,Hibernate解决了一个它自已创造出来的问题,因为E-R建模不象对象建模一样存在一对多这个概念,不存在由一方来维护关联这个问题。一对多关联的本质是一方维护着一个内存缓存表(set,list,array,bag),在运行期默认要将多方载入这个缓存,结束时将缓存清空并刷新到数据库,这是一种提前的性能优化(利用二级缓存),可能造成性能问题(不必要的加载)和增加编程复杂性。好比“高三一班加入一名新生"用E-R概念来表述就是new Student("张三").setClass("高三一班"); 而用一对多关联表述就变成了getAllStudents("高三一班").add(new Student("张三")),问题是getAllStudents和加入新生这两个逻辑是不相干的,加入新生就必须getAllStudents? 未必。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值