数据库中表的关联为主外键,在程序中是对象与对象之间的关联,站在ORM的角度上,每一个对象都对应着一张表,而每一个属性都对应着一个列,关系型数据库的核心是建立关系,也就是表和表之间,对象和对象之间。这就形成了一对一,一对多,多对一,多对多等关系。
一对一和多对多是一对多的两种特例,为啥这么说呢?
一对多外键唯一形成一对一,多对多呢?举例,一个人可以玩很多种游戏,对于人来说是一对多,一种游戏可以被很多人玩,对于游戏来说是多对一,于是产生多对多。
在Jpa里如何建立关联关系呢?
体现在实体类结构
主表拥有子表的集合属性
子表拥有主表的对象属性
1.主表中子表集合属性注解@OneToMany (mappedBy=“aaa”),这个是一对多的关系映射,双向关联必须设置。这里的aaa必须和子表中主表属性名一致。
2.子表中主表属性注解@ManyToOne+ @JoinColumn(name=“别名”,referencedColumnName=“主表中的外键属性名”)
3.既然产生了关系,那么在操作的时候避免不了级联操作,细分如下:
cascade=CascadeType.PERSIST 级联保存
CascadeType.REMOVE 级联删除
CascadeType.MERGE 级联更新
CascadeType.DETACH 级联脱管 (如果你要删除一个实体,但是它有外键无法删除,你就需要这个级联权限了。它会撤销所有相关的外键关联。)
CascadeType.REFRESH 级联刷新
CascadeType.ALL 拥有以上所有权限。