当前位置: 首页 > 知识库问答 >
问题:

六边形体系结构中的数据库存储库依赖关系

陶烨赫
2023-03-14

我正在将nTier架构迁移到六边形架构中。我的域现在定义得很好,我有所有基础设施依赖项的接口。查看数据库存储库,我有几个数据库,在下面的一侧有一个类实现每个repo。我的问题是关于数据库依赖项的正确方法是什么:

1-在域端有一个接口来处理数据访问,然后依赖于基础设施实现,并有一个类作为所有数据库存储库的入口点,就像一个facade,从那里调用所有存储库实现。这种方法与我在nTier应用程序中已经使用的方法相同,facade和repos是当前的数据库层。

2-有每个数据库的接口,我需要在域方面。每个接口都将实现在fra侧访问相应的数据库。它使层更薄,但这将数据管理逻辑添加到域中。域不应该关心数据在哪里,下面应该处理这个。如果某些数据被移动到另一个数据库,则需要在域端更改相应的接口(例如,将公开该数据的方法移动到另一个接口)

让我知道,

共有1个答案

澹台阳秋
2023-03-14

问得好。我在一个应用程序中遇到了同样的困境,我决定使用您公开的第一个选项:

只有一个访问数据的端口,域不关心数据的来源,无论数据存储在哪个数据库。在适配器中,我有一个facade来将请求转发到正确的数据库。实际上,在我的例子中,结果数据可能是两个数据库的混合。

但我认为另一种选择也是有效的,如果我们将数据库视为我们的应用程序必须与之对话的外部系统。我们的应用程序必须知道哪些次要参与者必须与之通信,在这种情况下,每个参与者在域上都有一个端口。

 类似资料:
  • 这对我来说是棘手的部分。我想实现的逻辑,但对我来说,在应用程序层实现这一点没有意义,因为持久性上下文在基础结构层(例如或)。但是,如果我正确理解六边形结构,我就不能直接在基础结构层实现接口,因为基础结构层不应该知道域层。 我错过了什么?

  • 服务->逻辑所在的位置(接口及其实现)。 实体->它们将在整个应用程序中使用。 Repository->基础结构层必须实现的接口。 基础结构层实现了存储库接口、JPA实体、对数据库的调用(hibernate)以及一些将JPA实体转换为核心实体的函数(映射器?)。 Spring data有一种非常有用的实现CRUD操作的方法: 但是,我认为如果我使用spring数据,如果UserRepository

  • 我想将审核更改持久化到oracle db。micro服务是一个带有hibernate的Spring Boot应用程序。我在javers的mvn存储库链接中发现了许多依赖项 我应该为oracle db使用哪个依赖项?

  • 我正在学习DDD和六角结构,我想我已经掌握了基本知识。然而,有一件事我不确定如何解决:我如何向用户显示数据? 例如,我得到了一个简单的域,其中包含一个带有某些功能的Worker实体(某些方法会导致实体更改)和一个WorkerRepository,这样我就可以持久化Worker了。我得到了一个应用程序层,其中包含一些命令和命令总线来操作域(比如创建员工和更新他们的工作时间,持久化更改),以及一个基础

  • 问题内容: 我需要找到函数/过程(在包体内定义)和它们使用的表之间的依赖关系。 我试过了,但它仅在包级别有效,而在内部功能/过程级别无效。是否有可能使用eg找到这种依赖关系? 在此先感谢您的帮助。 问题答案: 无法找到过程(在包中)和表之间的依赖关系。 有几种工具可以检查依赖关系。正如您已经发现的那样,仅在每个包级别上跟踪对象依赖关系。有一个整洁的工具PL / Scope 可以跟踪软件包各部分之间

  • 问题内容: 我有代表文件夹的对象,我想知道是否应该在数据库中代表它们。 一方面,似乎最简单的方法是不表示文件夹对象,而只存储文件夹中包含的对象的路径值。我看到的问题是,您不能保留其后代不包含任何项目的文件夹,这并不是一件大事。我也不清楚如何在不将所有内容预先加载到内存的情况下加载要显示的文件夹层次结构(例如在TreeView中),这可能是性能问题。 另一种方法是拥有一个“文件夹”表,该表引用其父文