【问题标题】:DDD / Good practice to save many entities at once through repositoryDDD / 通过存储库一次保存许多实体的良好做法
【发布时间】:2015-03-01 19:25:14
【问题描述】:

基本上,我有一个Notification 实体,代表用户在我的应用上的通知。

我希望用户可以同时标记为“阅读”多个通知的用例。

我目前所做的是获取通知集合,循环它们以便为每个通知指定一个notificationRepository.save(notification)。 (save 甚至 add,如果我们严格遵循存储库模式本质来抽象数据库概念)。

在底层,存储库实现绑定了一个远程数据库

问题是往返于我的数据库服务器(因为远程)非常昂贵。
实际上,如果用户希望标记 10 条通知,则将有 10 次往返...

有没有办法批量保存,同时保持 DDD 技术模式规则?
例如,我应该在我的存储库中定义一个addAll(或saveAll)方法吗?

【问题讨论】:

  • My Repository 有一个 flush 方法,可以将所有挂起的更改写入数据库。不需要保存方法。
  • 了解工作单元。

标签: java architecture domain-driven-design repository-pattern


【解决方案1】:

通常,如果您有 ORM 或某种更改跟踪器,则不需要在您的存储库中使用 save() 方法,因为在提交 UnitOfWork 时,修改将在应用程序级别刷新。

如果标记了 10 个通知,ORM 很可能会将其转换为 10 个更新语句,但这对我来说从来都不是问题。如果确实有问题,也许您可​​以优化它以进行批量更新。

【讨论】:

    猜你喜欢
    • 2013-12-05
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2010-11-24
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多