1、@OneToOne(一对一,单向关联)
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(关联指定列)
JoinCloumn用于注释表中的字段,与Column不同的是它要保存表与表之间关系的字段。
1)name属性用来标记表中对应字段名称,
若果不设置name,则默认name=关联表名称+“_”+关联表主键名称
2)一般情况下,关联的实体的主键用来作外键。如果不想使用主键作为外键,则使用referencedColumnName。
3、OneToMany(一对多,单向)
1)targetEntity属性表示默认关联的实体类型,默认为当前标注的实体类
2)其他属性与@OneToMany相同
4、@JoinTable(表关联)
1)name属性为连接两个表的表名称,若不指定,则使用默认的表名称,格式如下:
"表名1"+"_"+"表名2";
2)joinColumn属性表示,在保存关系的表中,所保存关联关系的外键的字段,并配合@JoinColumn标记使用
3)inverseJoinColumn属性与joinColumn类似,它保存的是保存关系的另外一个外键字段
4)catalog和schema属性表示实体指定点目录名称或数据库名称
5)uniqueConstraints属性表示该实体所关联的唯一约束条件,一个实体可以有多个唯一约束条件,默认没有约束
5、@ManyToMany(多对多)