Java 创建具有循环依赖关系的实体映射器
我正在做的一个项目有问题。我需要创建一个映射器,将实体对象转换为它的VO(值对象)形式,我需要这样做来限制我的持久性层和业务层之间的依赖关系,但我有一些无法解析的循环依赖关系,请看这个示例: 我想在我的业务层中使用一个能力对象,因此我使用映射器将实体转换为我的层可以使用的VOJava 创建具有循环依赖关系的实体映射器,java,dependencies,cycle,Java,Dependencies,Cycle,我正在做的一个项目有问题。我需要创建一个映射器,将实体对象转换为它的VO(值对象)形式,我需要这样做来限制我的持久性层和业务层之间的依赖关系,但我有一些无法解析的循环依赖关系,请看这个示例: 我想在我的业务层中使用一个能力对象,因此我使用映射器将实体转换为我的层可以使用的VO class Competence { private Domain dom; } class Domain { private List<Competence> lComp; } 班级能力{
class Competence {
private Domain dom;
}
class Domain {
private List<Competence> lComp;
}
班级能力{
私有域dom;
}
类域{
私人名单lComp;
}
但是当我转换一个能力对象时,我也需要转换一个域,当我转换一个域时,我需要转换能力列表等等。。。我真的不想转换我数据库的一半:/
我一直在考虑转换对象的一半或避免某些对象来停止循环,但这很危险,这并不是解决我问题的真正方法:/
你有解决这个问题的办法吗
提前感谢!:) 有几种方法可以解决这个问题。首先,你必须决定要转换哪一方。假设您想要转换
能力
s,而不是转换域
s
能力
中的域
域
对象,该对象仅包含所需的ID和一组最小字段(不包括能力
s)希望我正确地理解了您的问题。处理此类问题的一个标准机制是重新编码如下:
class Competence {
}
class Domain {
}
class CompetenceDomain {
Competence competence;
Domain domain;
}
Map<Domain,List<Competence>> domainsWithCompetence = ...;
Map<Competence,Domain> competencesInDomain = ...;
班级能力{
}
类域{
}
类能力域{
能力;
域域;
}
映射域权限=。。。;
映射能力域=。。。;
这将对象的关系从对象本身分离到一个单独的机制中。是否使用现有的持久层实现(例如Hibernate)还是您自己管理持久性?我使用EclipseLink来管理持久性层您是否因为尝试将ValueObject转换为XML(例如,从web服务返回对象时自动发生)而遇到此问题?否,我需要最小化持久性层和业务层之间的依赖关系,为此,我创建了一些与持久层使用的实体类相对应的VO,我创建了一个带有静态方法的简单映射器类,在其中我传递实体或VO对象以转换为其他类型,我不知道我是否清楚?除息的