映射注解分组

所有Annotation形式的映射元数据都位于@javax.persistence包里面,可以按两个正交的维度进行分组:

  • O/R的维度,可划分为针对类的逻辑注解和针对数据库的物理注解;
  • 从粒度维度,可划分为装对类/表的注解和针对属性/列的注解。

以上两个正交的维度将映射注解划分为四个象限,举例如下:

逻辑映射 物理映射
类/表级映射 @Entity
@Embeddable
@MappedSuperclass
...
@Table
@CollectionTable
@JoinTable
...
属性/列级映射 @Basic
@ManyToOne
@Id
@ElementCollection
@AttributeOverride
@Embedded
...
@Column
@JoinColumn
@OrderColumn
...

属性/列级的注解(包括逻辑注解和物理注解),又可以根据三个正交的维度进行分组:

  • O/R的维度分组,可划分为针对类属性的逻辑注解和针对数据库列的物理注解
  • 从属性类型的维度分组,可划分针对值(简单值或值对象)类型属性的注解和针对关联(实体)类型属性的注解;
  • 从属性基数的维度分组,可划分为针对单值类型属性的注解和针对多值(List、Set、Map、Collection、数组等)类型属性的注解。

以上三个正交的维度将属性/列级的映射注解划分为六个象限(多值属性没有对应的物理映射注解),举例如下:

  单值 多值
逻辑映射 物理映射 逻辑映射
值属性
(Attribute)
@Basic
@Embedded
@Id
@Version
@Column @ElementCollection
关联属性
(Association)
@OneToOne
@ManyToOne
@JoinColumn @OneToMany
@ManyToMany

results matching ""

    No results matching ""