在我的java应用程序中,我有一些实体,其中一些可能引用另一个实体。
说我有一个实体:
class Work{
User manager;
}
class User{
List works;
}
然后,如果我创建一个Work实例,它将保留一个将保存Work的引用的用户的引用。
我担心会有无休止的关系。
所以我想知道这是否应该避免?
答案 0 :(得分:2)
这种双向关系没有问题。您似乎担心因遍历User
到Work
而又会再次返回等引起的某种循环。
问问自己是否需要Work
获得User
而User
获得Work
。如果是这种情况,则存储双向引用是有意义的。
答案 1 :(得分:1)
这种双向引用没有问题。 我能想到的唯一可以进入“无限嵌套”的情况是,如果两个类中的代码相互调用方法,例如。
class Work {
User manager;
public void doWorkStuff() {
manager.doUserStuff() {
}
}
class User {
Work works;
public void doUserStuff() {
works.doWorkStuff();
}
}
答案 2 :(得分:0)
这种情况取决于设计。工作和用户分享什么样的关系?它是1:m,m:1还是m:n?基于这个结果,我们应该相应地设计这个类。
根据您的问题,我可以看到1个用户可以拥有多个作品(作品列表)但是1个作品只能有1个用户。因此,Work类中的用户将是确定工作所有者的实体。因此,请相应地命名,即clas Work {私人用户所有者; ....}