仓储里面的缓存多对多关系怎么设计
我在仿照领域驱动设计重构了系统,当我在添加缓存功能的时候发现有点难度,希望老师指点.
我举一个例子:用户--角色 多对多关系
用户和角色都属于聚合根,因此应该都同时对应的repository,同样具有对应的缓存集合.
当从数据库中加载用户和角色的时候,该怎么维护其中间关联信息呢?
我想了两种方案,感觉都不行,
第一种:互相存放id
User
{
String[] roleIds;
}
Role
{
String[] userIds;
}
这样我在获取user后需要展示其角色列表,根据其id数组就可以直接通过id去获取角色列表,同样对角色也是.
但是现在有个问题,就是我在user里面删除角色的时候,角色缓存却没有通知到,这样就会出现脏数据.如果这时候通知一下角色的话,用户其他关联信息可能很多,是否其他的都要通知一遍?
于是我想到另一种:
就是只在用户里面存放roleIds,需要展示角色中的用户列表时,就通过反向查询user表,
这样当我删除关联信息的话都通过user来处理,但是这样效率很低.感觉还是不行
经验不多,碰到这样问题很头疼,是否建模出了问题,还是其他问题,希望指点.