把Repository上升到框架时,实体平铺遇到问题
一旦实现平铺,那么缓存的“<唯一标识,实体>对”就不能替换实体对象了,所有修改都要基于值对象(实体状态)修改。
不能替换的理由:cache是以替换对象来更新“key,value对”的,B1聚合于A1(A1内聚B1),A1和B1都缓存,那么怎么修改cache对B1的缓存,也不会改变A1内聚B1的关系,不过实现方法还是有的,通过引入注册方式,缓存一个实体(A1)时,注册其内在所有实体与其的关系(B1与A1的关系),当一个其内在的实体更新了,则更新所有关注它(内聚它并已经缓存)的实体,不过……这方法貌似太沉重了,有没有更好的思路?
实现替换的目的在于:通过复制替换实现并行(快照,替身思维)。
替换与不替换的实现差别:替换是以唯一标识为关联关系,不替换则是以对象为关联关系(因为对象中包含唯一标识的关联关系,所以省去了步骤)。替换,同一实体会被缓存多次,不替换,只有头一次缓存,只有驱逐后,才能再缓存,所有修改都是基于同一个对象。
[该贴被SpeedVan于2011-03-05 12:56修改过]