JPA 双向关系的优缺点

bal*_*teo 5 hibernate jpa jpa-2.0

我的情况是,我需要将JPA 单向关系更改为双向关系Account实体具有 的列表Advertisements),以便给定 a AdvertisementI 可以确定它是否属于 an Account(出于安全原因)。

似乎跨领域问题对我的应用程序施加了设计决策,我不确定这是否好。

另外,我不知道使用双向关系缺点是什么。

任何人都可以发表评论和建议吗?

wyp*_*prz 5

让我试着用一个例子来回答这个问题:

@Entity
public clas Account {

    @OneToMany(mappedBy = "account") // is mappedBy really necessary ?
    private List<Advertisements> advertisements;
}
Run Code Online (Sandbox Code Playgroud)

单向缺点:
缺乏mappedBy属性导致单向一对多关系并产生额外的由外键组成的连接表。这通常被视为 JPA 陷阱,并对数据库级别的性能产生负面影响(您有三个表而不是两个)。

@Entity
public clas Advertisements {

    @ManyToOne
    @JoinColumn(name="ACCOUNT_ID")
    private Account account; // is Account really necessary ?
}
Run Code Online (Sandbox Code Playgroud)

双向缺点:
您可以从JPA导航AdvertisementsAccount因此您可以访问单值关联路径"SELECT adv.account FROM Advertisements adv"。假设是您不想这样做,因此可以说这可能会对 JPA 级别的安全性产生负面影响。