gpt4 book ai didi

spring - 对 Spring-Data DDD 存储库模式感到困惑

转载 作者:IT老高 更新时间:2023-10-28 13:49:32 25 4
gpt4 key购买 nike

我不太了解 DDD 存储库模式,但 Spring 中的实现让我感到困惑。

public interface PersonRepository extends JpaRepository<Person, Long> { … }

由于接口(interface)扩展了 JpaRepository(或 MongoDBRepository...),如果您从一个 db 更改为另一个,您也必须更改接口(interface)。

对我来说,接口(interface)是用来提供一些抽象的,但在这里它不是那么抽象......

你知道为什么 Spring-Data 会这样工作吗?

最佳答案

你是对的,从外部的角度来看,接口(interface)是对所有实现类都有效的东西的抽象。

这正是这里发生的事情:

  • JpaRepository 是所有 JPA 存储库(针对所有不同实体)的通用 View ,而 MongoDBRepository 对所有 MongoDB 实体都是相同的。
  • 但是 JpaRepository 和 MongoDBRepository 没有任何共同之处,除了在通用 super 接口(interface)中定义的东西:

    • org.springframework.data.repository.PagingAndSortingRepository
    • org.springframework.data.repository.Repository

所以对我来说它看起来很正常。

如果您使用实现您的存储库的类,然后使用 PagingAndSortingRepository 或存储库,如果您希望能够从 JPA 实现切换到基于文档的实现(抱歉,我无法想象这样的用例 - 无论如何)。当然,您的 Repository 实现应该实现正确的接口(interface)(JpaRepository、MongoDBRepository),具体取决于它是什么。

关于spring - 对 Spring-Data DDD 存储库模式感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5975199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com