首页 >Java >java教程 >JoinColumn 与 MappedBy:如何为实体关系选择正确的 JPA 注释?

JoinColumn 与 MappedBy:如何为实体关系选择正确的 JPA 注释?

DDD
DDD原创
2024-12-18 05:34:20972浏览

JoinColumn vs. MappedBy: How to Choose the Right JPA Annotation for Entity Relationships?

JDBC:JoinColumn 与 MappedBy

在 Java Persistence API (JPA) 中,JoinColumn 和mappedBy 是用于定义实体之间关系的两个注释。理解这些注解之间的区别对于高效的数据建模和数据库交互至关重要。

JoinColumn:所有权和外键

@JoinColumn 注解表示实体它是关系的所有者。这意味着相应的表维护一个引用被引用表的主键的外键列。例如,在提供的示例代码中:

@JoinColumn(name = "companyIdRef", referencedColumnName = "companyId")

Company 实体是与 Branch 实体关系的所有者。 Branch 表中的 companyIdRef 列将用作引用 Company 表中的 companyId 列的外键。

MappedBy:反向关系

另一方面, @mappedBy 注解表示用它注解的实体位于关系的反面。关系的所有者驻留在“其他”实体中,该实体由mappedBy 属性引用。在这种情况下:

@mappedBy = "companyIdRef"

Branch 实体与 Company 实体的关系相反。 Branch 实体中的 companyIdRef 属性建立了双向关系,允许从 Branch 实体访问 Company 实体。

示例代码的正确注释

至实现完全双向关系,示例代码的正确注释为:

@Entity
public class Company {
    @OneToMany(mappedBy = "company",
               orphanRemoval = true,
               fetch = FetchType.LAZY,
               cascade = CascadeType.ALL)
    private List<Branch> branches;
}

@Entity
public class Branch {
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "companyId")
    private Company company;
}

通过正确注释关系,您可以有效地导航和操作 Java 应用程序中相关实体之间的数据。

以上是JoinColumn 与 MappedBy:如何为实体关系选择正确的 JPA 注释?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn