【问题标题】:Is it possible to have single repository for both relational and non-relation db in spring data?春季数据中是否可以为关系数据库和非关系数据库提供单个存储库?
【发布时间】:2020-04-05 03:41:51
【问题描述】:

我想让我的微服务同时兼容关系和非关系数据库,

目前,我有五个小模块组成一个微服务:

  • Controller-module - 这包含我所有的控制器并依赖于服务模块

  • 服务模块 - 这包含与数据库层通信以获取数据或发布数据的服务,并且显然对数据层有依赖性(common-db-modules)

  • Common-db-modules- 该模块定义了数据层遵循的合同(仅限接口),以便与服务兼容

  • 数据层 - 该模块提供由 common-db-module 定义的合约的具体实现。根据数据库,可能有多个数据层。这意味着一个用于 Mongo DB,一个用于 MySQL,等等

  • 打包:根据使用的db定义打包模块的数量,打包包

    • 控制器模块
    • 服务模块
    • 一个数据层(为此打包的数据库)

我的问题:有没有办法消除这种常见的 DB 合同,并有一个数据层的实现来为关系和非关系数据库提供服务?

【问题讨论】:

  • 为什么不使用存储库模式?
  • 你的意思是使用spring data rest?我的服务可能有很多操作,我不确定这是否是一个好的选择,但无论如何,它是否适用于关系数据库和非关系数据库?
  • 您可以使用通用存储库并将其实现为您想要的 SQL 或 NoSQL。
  • 这就是我所做的,我已经为 SQL 和 NonSQL 编写了实现,我想要的是编写一种适用于 SQL 和 NonSQL 的实现
  • @KumarGaurav 您可以拥有单个存储库,将执行基于方言的查询。你有没有尝试过?

标签: spring-data-jpa spring-data microservices


【解决方案1】:

您不必自己构建数据层,Spring 已经为您创建了数据访问对象 (DAO)。使用能够从 sql 和 nosql 获取数据的 JPA 存储库。

请参考https://docs.spring.io/spring-data/jpa/docs/2.2.6.RELEASE/reference/html/#repositories

你还需要配置..数据库

【讨论】:

  • 它写在那里它提供了特定的解决方案。有两个接口,一个用于 jpa,另一个用于 mongo。我只会来到零平方。也为我的莫去。实现我使用了mongorepository。我要解决的问题是编写一次,它应该适用于 sql 和 nosql。就像单个休眠持久层能够在 mssql mysql oracle etx 上工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多