JPA关系映射理解
在SpringBoot 中涉及数据库多表查询等等,往往涉及关系映射。刚开始对这个映射很懵逼,搞不懂其中的维护端和被维护端的含义以及在实体涉及时应该怎么设计主键、外键是在维护端还是被维护端。下面就讲解一下自己的见解!
JAP规范
关联关系映射,是映射关系中比较复杂的一种映射关系,总的说来有一对一、一对多和多对多几种关系。拥有mappedBy注解的实体类为关系被维护端,另外的实体类为关系维护端的。关系的维护端负责对关系(在多对多为中间关联表)的CRUD做操作。关系的被维护端不能进行该操作,不能维护关系。
这个概念对于我们新手来理解的话,可能有点懵逼,直接上图!
一个作者有多个文章,多个文章可能对于一个作者。这是一个一对多或者多对一的关系映射。(其中主键、外键已经标出便于理解)
解释
- 针对这两个表,我们应该如何设计区分主键和外键的位置。根据JPAG规范中可以知道,多端(一个作者对应多个文章,所以文章为多端)为关系的维护端。
- 维护端是要进行一些具体的操作,比如:增删改查等功能。
- 维护端就要进行更多的数据添加删除等操作,如果是在作者表中设计一个额外的外键属性来连接文章表的话,就会作者表中就会出现两个相同作者信息(除外键信息不一致),这样就跟一个作者对应多个文章有冲突,因此我们应该把外键设置在文章表(多端/维护端)中。