UserRepository接收到CreateUserCommand之后可能会产生很多操作,比如调用UserDAO,调用UserAccountDAO,调用验证或者日志类等,这些操作必须保持一致性(发生异常时全部回滚),而UserRepository就是维护一致性的存在。
UserRepository可以调用User领域内的DAO,也可以调用CrossCutting Layer的方法,并不针对某一个具体的数据表。
PassportService就是传说中的领域服务,负责调用UserRepository,BBSUserRepository等,并对UI层提供API接口。
这是完整的调用路径:
UI
↓
PassportService
↓ ↓
UserRepository BBSUserRepository
↓ ↓
UserDAO UserAccountDAO
如果有不涉及数据库的业务计算,比如更新缓存、计算积分等,可以由UserRepository调用相关的BO处理。