Hibernate的关联映射

1.关系的分类

单向关系

  • 1 →1
  • 1→N
  • N→1
  • N→N
双向关系

  • 1 - 1
  • 1 - N
  • N - N
2.无连接表的情况

2.1单向(只需在某一方书写@OneToOne、@OneToMany、@ManyToOne、@ManyToMany的注解,而另一方则为最普通的@Entity和@Table修饰的实体类即可)

2.1.1:   1→N(书写在1的一方的实体中的相应属性值上)

@OneToMany

@JoinColumn(该外键列并不在本类中,而是在关联的实体类所对应的表中)

2.1.2: N→1(书写在N的实体类中)

@ManyToOne

@JoinColumn

2.1.3: N→N(书写在某一个N的类中,该关系必须要有连接表(中间表))

@ManyToMany

@JoinTable

2.1.4: 1→1(书写在某一个类中)

@OneToOne

@JoinColumn


2.2双向的连接情况(每个类的注解如下,左右对应)

2.2.1:                1                                        ---                                 1

                           @OneToOne(mappedBy)                                   @OneToOne

                                                                                                      @JoinColumn

2.2.2                   1                                        ---                                N

                           @OneToMany(mappedBy)                                 @ManyToOne

                                                                                                         @JoinColumn

2.2.3                    N                                      ---                                  N

                            ManyToMany(mappedBy)                                   @ManyToMany

                                                                                                           @JoinTable

3.有连接表的情况下,不再基于外键(只书写了可能会使用到的,基本不可能使用到的则未书写)

3.1单向

3.1.1:  1→N

@OneToMany

@JoinTable

3.1.2:  1→1

@OneToOne

@JoinTable

3.1.3:N→1

@ManyToOne

@JoinTable

3.2双向

3.2.1:   1  --  N

@OneToMany(mappedBy)                                  @ManyToOne

@JoinTable(只有在没有mappedBy的时候才书写,且与另一个类中的JoinTable对应属性相同)                                                                                                                                @JoinTable


注解属性书写说明:

1.@OneToMany,@OneToOne,@ManyToMany,@ManyToOne的注解的常用属性值:cascade、fetch、targetEntity(书写上之后会有效率的提升)

2.@JoinTable的属性值(主要包括三个):name、joinColumns(配置外键信息,参照当前类的主键列)、inverseJoinColumns(配置外键信息,参照关联实体类的主键列)

3.mappedBy:表示放弃管理关联的实体,交给另一方来维护,只在双向关联中使用。

4.@JoinColumn的主要属性值:name,referenceColumnName,unique




你可能感兴趣的:(Hibernate)