对象关系映射

1.双向一对一映射

 

双向一对一映射就是实体中的任何一方发生改变,另一方都要有相应改变,即双方是相互制约的。

 

@OneToOne

 

  • targetEntity:该属性定义关系实体的类型,默认是该成员属性对应的类类型,所以通常不需要提供定义。
  • mappedBy:该属性定义实体之间的双向关系。
  • cascade:该属性定义实体之间的级联关系。定义的级联关系将被容器视为对当前实体及其关联实体对象采取相同的操作,而且这种关系是递归调用。该属性可选的值有:CascadeType.PERSIST(级联新建),CascadeType.REMOVE(级联删除),CascadeType.REFRESH(级联刷新),CascadeType.MERGE(级联更新),CascadeType.ALL(级联全部操作)。
  • fetch:该属性用来设置预先加载方式。可选的值有:FetchType.EAGER和FetchType.LAZY。FetchType.EAGER表示在加载实体的同时就加载关系实体。FetchType.LAZY表示关系实体在被访问时才加载。
  • optional:该属性用来设置关联实体双方是否必须存在。

@JoinColumn

 

  • name:该属性用来设置充当外键的字段名称。
  • referencedColumnName:该属性用来设置外键对应的关联表的主键字段名称。
  • unique:该属性是用来设置name属性指定的字段是否具有唯一性。
  • nullable:该属性用来设置name属性指定的字段能否为空。
  • insertable:该属性用来设置name属性指定的字段是否在持久化时使用。
  • updateable:该属性用来设置name属性指定的字段是否在更新实体时使用。

2.单向一对一映射

 

去掉类里相关对象属性和@OneToOne注解。

 

3.双向一对多与多对一映射

 

@OneToMany:该注解的属性及用法与@OneToOne注解类似。

@ManyToOne

 

4.单向一对多与多对一映射

 

一对多单向关联只有基于外键的一对多单向关联一种,因为在多的一端必须通过主键来确定每条记录的唯一性,又必须通过外键来关联另一端。

 

5.双向多对多映射

 

@ManyToMany:该注解的属性及用法与@OneToOne注解类似。

由于多对多映射使用了中间表,所以需要@JoinTable注解来指明中间表与其他表之间的关联关系。该注解的name属性用来设置中间表的表名。joinColumns属性通过使用@joinColumn注解来设置中间表与另外一张表之间进行关联的对应字段。inverseJoinColumns属性通过使用@JoinColumn注解来设置中间表与本表之间进行关联的对应字段。

 

6.单向多对多映射

 

去掉一方属性和注解。

你可能感兴趣的:(对象)