原创 | 使用JPA实现DDD持久化-O/R映射元数据:映射注解分组

320 阅读2分钟

O/R映射元数据

为了将实体、值对象以及它们的属性存储到数据库表和列,我们需要给JPA提供映射元数据。JPA实现框架使用我们提供的映射元数据,将实体和值对象的状态(属性值)持久化到指定的数据库表和列。

有两种形式的映射元数据:在持久化类(实体和值对象等)上添加的Annotation和独立存在的XML映射文件。至今为止Annotation是绝大多数人采用的映射方式。因此本教程只讲述Annotation形式的映射元数据。如果Annotation和XML两种映射元数据同时存在,XML优先。

映射元数据是JPA的重点,内容较多,下面分节讲述。

映射注解分组

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

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

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

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

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

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

详细内容请戳这里↓↓↓

原创 | 使用JPA实现DDD持久化-O/R映射元数据:映射注解分组

这一节就讲到这里,下一节我们讲**"O/R映射元数据:类级映射-实体和值对象"**。

如果觉得有收获,点个【赞】鼓励一下呗!