Hibernate的关联映射有哪些?分别如何实现?

Hibernate支持多种关联映射,主要有:

1、一对一(@OneToOne):一个实体对象对应另一个实体对象。实现方式:

  • 在任意一方添加@OneToOne注解,指定mappedBy或targetEntity属性。
  • 使用元素定义映射,指定property-ref或class属性。
  • 需要在其中一方定义外键,俩外键字段名称默认为主键表名_主键列名。

2、一对多(@OneToMany):一个实体对象对应多个实体对象。实现方式:

  • 在一方添加@OneToMany注解,指定mappedBy或targetEntity属性。
  • 使用元素定义映射,指定property-ref或class属性。
  • 默认不需要定义外键,由Hibernate使用关联表的主键-外键关系实现。

3、多对一(@ManyToOne):多个实体对象对应一个实体对象。实现方式:

  • 在多方添加@ManyToOne注解,指定targetEntity属性,外键字段名称默认为关联表名_主键列名。
  • 使用元素定义映射,指定column属性指定外键,class属性指定关联类。
  • 需要定义外键,指向一方的主键值。

4、多对多(@ManyToMany):多个实体对象对应多个实体对象。实现方式:

  • 在任一方或双方添加@ManyToMany注解,指定mappedBy、targetEntity和可选的fetch属性。
  • 使用元素定义映射,指定property-ref或class属性,以及可选的fetch属性。
  • 需要定义中间表,主键为双方主键的组合,不需要额外外键字段。

除此之外,Hibernate还支持@ElementCollection定义集合元素的映射,@Embedded定义内嵌类型的映射等。这些关联映射通过定义实体对象之间的依赖关系,实现对象之间的业务关联映射到数据库。