如何使用可更新缓存实现存储库模式



我正在努力在项目中应用存储库模式。

要求并不复杂:
1. 当客户端从服务器请求某个实体列表时,客户端会将它们保存到本地数据库进行缓存。 2. 如果有缓存,客户端应使用它们(在过期时间内(。 3. 当客户端获得用户操作(如刷新数据(或收到某些通知时,客户端应从远程服务器更新本地数据,无论它们是否已过期。

我学习了域实体的存储库模式抽象持久性。
因此,应用程序不需要知道实体来自何处。 (从服务器或本地数据库等。

但是,如何更新存储库隐藏的本地数据?
通过在存储库方法参数中添加标志?

fun get(id: EntityId, update: Boolean)

但我认为这揭示了实施细节。
存储库是否应该侦听像UpdateEntityRequested这样的域事件?

我相信你回答了你自己的问题。您必须以某种方式向客户端缓存指示它应该更新。也就是说,如果您通过域中的事件引入它,那么您仍然将域绑定到持久性概念中。

好消息是,您可以简单地说,如果聚合存在事件,那么您应该更新回服务器。它不一定是特定事件。流中的任何事件都足以识别已发生更改。

如果这个答案不够充分,请提供更多细节。

最新更新