@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany

1、@OneToOne(一对一,单向关联)

@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany_第1张图片

1)targetEntity属性标时关联的实体类,默认为当前标注的实体

2)cascade属性表示与此实体一对一关联的实体的联级样式类型。联级样式上当对实体进行操作时的策略。

    其中,在定义关系时,经常会考虑是否要定义cascade属性的问题。

    若不定义,则对关系表不会产生影响;

    定义为:CasacdeType.PERSIST,级联新建;

    定义为:CascadeTypE.REMOVE,级联删除;

    定义为:CascadeType.REFRESH,级联刷新;

    定义为:CascadeType.MERGE,级联更新;

    定义为:CascadeType.ALL,表示选择上述四种。

3)fetch属性表示该实体的加载方式,有LAZY和EAGER两种方式

    3.1)FetchType.LAZY:懒加载,加载一个实体时,定义懒加载的属性不会马上从数据库中加载

    3.2)FetchType.EAGER:急加载,加载一个实体时,定义急加载的属性会立即从数据库中加载

4)optional属性表示关联的实体是否能够存在null值,默认为true,表示可以存在null值。如果为false,则要同时使用@JoinColumn标记。

5)mappedBy属性用于双向关联实体时,标注在不保存关系实体中


2、@JoinColumn(关联指定列)

@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany_第2张图片

JoinCloumn用于注释表中的字段,与Column不同的是它要保存表与表之间关系的字段。

1)name属性用来标记表中对应字段名称,

      若果不设置name,则默认name=关联表名称+“_”+关联表主键名称

2)一般情况下,关联的实体的主键用来作外键。如果不想使用主键作为外键,则使用referencedColumnName。


3、OneToMany(一对多,单向)

@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany_第3张图片

1)targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类

2)其他属性与@OneToMany相同


4、@JoinTable(表关联)

@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany_第4张图片

1)name属性为连接两个表的表名称,若不指定,则使用默认的表名称,格式如下:

        "表名1"+"_"+"表名2";

2)joinColumn属性表示,在保存关系的表中,所保存关联关系的外键的字段,并配合@JoinColumn标记使用

3)inverseJoinColumn属性与joinColumn类似,它保存的是保存关系的另外一个外键字段

4)catalog和schema属性表示实体指定点目录名称或数据库名称

5)uniqueConstraints属性表示该实体所关联的唯一约束条件,一个实体可以有多个唯一约束条件,默认没有约束


5、@ManyToMany(多对多)

@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany_第5张图片

你可能感兴趣的:(@OnoToOne&@JoinColumn&@OneToMany&@JoinTable&@ManyToMany)