【发布时间】: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