JPA双向关系的利弊

时间:2014-03-17 17:48:42

标签: hibernate jpa jpa-2.0

我处于这种情况,我需要将我的JPA单向关系更改为双向Account实体的列表为Advertisements),以便给出{{ 1}}我可以确定它是否属于Advertisement(出于安全原因)。

似乎跨界关注对我的申请做出了设计决定,我不确定这是好事。

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

有人可以评论和建议吗?

1 个答案:

答案 0 :(得分:1)

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

@Entity
public clas Account {

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

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

@Entity
public clas Advertisements {

    @ManyToOne
    @JoinColumn(name="ACCOUNT_ID")
    private Account account; // is Account really necessary ?
}

双向缺点:
您可以从Advertisements导航到Account,因此就JPA而言,您可以访问单值关联路径"SELECT adv.account FROM Advertisements adv"。假设您不希望因此可能会对JPA级别的安全性产生负面影响。