我正在处理一个项目的问题。我需要创建一个映射器,将实体对象转换为它的VO(值对象)形式,我需要这样做来限制我的持久层和我的业务层之间的依赖关系,但我有一些我无法解决的循环依赖,看看这个例子:
我想在业务层使用Competence对象,所以我使用mapper将实体转换为我的图层可用的VO。
class Competence {
private Domain dom;
}
class Domain {
private List<Competence> lComp;
}
但是当我转换一个Competence对象时,我也需要转换一个域,当我转换一个域时,我需要转换Competence列表等等...而且我真的不想转换我的数据库的一半: /
我正在考虑转换对象的一半或避免某些对象停止循环,但它很危险,这不是我的问题的真正解决方案:/
有解决方案吗?
提前致谢! :)
答案 0 :(得分:1)
处理此类问题的一种标准机制是重新编码为:
class Competence {
}
class Domain {
}
class CompetenceDomain {
Competence competence;
Domain domain;
}
Map<Domain,List<Competence>> domainsWithCompetence = ...;
Map<Competence,Domain> competencesInDomain = ...;
这会将对象的关系从对象本身分解为单独的机制。
答案 1 :(得分:0)
有很多方法可以解决这个问题。首先,您必须决定要转换的那一方。我们假设您要转换Competence
而不转换Domain
。
Domain
内的Competence
。Domain
)的存根Competence
对象。希望我能正确理解你的问题。