![](http://dl2.iteye.com/upload/attachment/0122/6088/a708dcbb-63e9-3218-ac86-14aaca1c1f4b.png)
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? 未必。