0

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

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

class Competence {
    private Domain dom;
}

class Domain {
    private List<Competence> lComp;
}

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

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

你有解决这个问题的方法吗?

提前致谢 !:)

4

2 回答 2

2

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

class Competence {
}

class Domain {
}

class CompetenceDomain {
  Competence competence;
  Domain domain;
}

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

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

于 2013-02-22T12:45:24.853 回答
0

有几种方法可以解决这个问题。首先,您必须决定要转换哪一方。假设您要转换Competences 而不是转换Domains。

  1. 使用 ID 来Domain引用Competence.
  2. 使用仅包含您需要的 ID 和一组最小字段(不包括 s)的存根Domain对象。Competence

希望我已经正确理解了您的问题。

于 2013-02-22T12:44:29.333 回答