java - 创建具有循环依赖关系的实体映射器

标签 java dependencies cycle

我正在处理的项目遇到问题。我需要创建一个映射器,将实体对象转换为 VO(值对象)形式,我需要这样做来限制持久层和业务层之间的依赖关系,但我有一些无法解决的循环依赖关系,看这个例子:

我想在我的业务层中使用 Competence 对象,因此我使用映射器将实体转换为我的层可用的 VO。

class Competence {
    private Domain dom;
}

class Domain {
    private List<Competence> lComp;
}

但是当我转换一个能力对象时,我也需要转换一个域,当我转换一个域时,我需要转换能力列表等等......而且我真的不想转换我的数据库的一半:/

我正在考虑转换一半的对象或避免某些对象来停止循环,但这很危险,而且这并不是真正解决我的问题的解决方案:/

你有办法解决这个问题吗?

提前致谢! :)

最佳答案

处理此类问题的一种标准机制是重新编码为:

class Competence {
}

class Domain {
}

class CompetenceDomain {
  Competence competence;
  Domain domain;
}

Map<Domain,List<Competence>> domainsWithCompetence = ...;
Map<Competence,Domain> competencesInDomain = ...;

这将对象的关系从对象本身中分离出来,分解为一个单独的机制。

关于java - 创建具有循环依赖关系的实体映射器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15024403/

相关文章:

java - C和Java中的字符

java - 是否可以将两条线视为一条线?

java - JAR 部署后自动更新 Maven 依赖项

java - Selenium 测试用例中的循环 - java

haskell - 在 Haskell 中从循环生成子列表

java - 如何在没有控制台的情况下运行 java 程序

java - 使用接口(interface)将一个数组列表传递给包装类中的另一个数组列表

jar - 有没有办法在build.gradle中自动生成gradle依赖声明?

android - 无法为类型为 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 的对象获取未知属性 'okhttpVersion'

graph - Union-Find算法并判断图中一条边是否属于圈