代码层面绕过Repository 直接查询DAO 然后转化成VO传给调用方

本文探讨了在多数据源和分库分表场景下,如何通过直接操作DAO来实现特定查询需求,例如在MySQL+ES组合中利用搜索引擎的索引。此外,还讨论了如何保持Repository和领域对象的纯洁性,减少不必要的复杂查询,以及在读写分离和自定义同步机制中的应用。针对外部查询,强调了简化和定制化领域模型以提高效率的重要性。
摘要由CSDN通过智能技术生成

最最简化的实现方式,是代码层面绕过Repository,直接查询DAO,然后转化成VO传给调用方。这样做初看并没有什么卵用,但是结合到具体的业务场景来看,就有用处了,举几个例子:

应用使用了多个数据源,如MySql+ES/opensearch。在分库分表场景下,如果需要查询”所有用户+状态为未开票 的 所有对账单“,直接走MySql是无法查询的,只能使用搜索引擎预先创建的索引,这是一种读写不分离也得分离的情况。

数据源的拓扑结构。MySql的读写分离是透明的,假如要自己造轮子,在应用层面指定写库和读库,并自己提供同步机制,那么此时就可以分别对写库和读库做操作,”强行“读写分离。

保持领域对象和Repository的纯洁性。有很多读操作,都是领域方法和Application层的业务逻辑用不到的,仅仅是提供给外部系统做查询。如果在Repository中加入了大量的查询方法,会增加维护成本。同时,领域对象之间操作时,加载的对象一般是完整的;但是对于外部查询,考虑到领域对象和DB表结构并不完全一致,需要进行定制化的简化和组合,如下图中如果只查商品基础信息,是没必要加载整个领域模型的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值