写点什么

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

发布于: 2020 年 12 月 10 日
原创 | 使用JPA实现DDD持久化-O/R映射元数据:映射注解分组

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 映射元数据:类级映射-实体和值对象"


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



发布于: 2020 年 12 月 10 日阅读数: 37
用户头像

高级架构师,技术顾问,交流公号:编程道与术 2020.04.28 加入

杨宇于2020年创立编程道与术,致力于研究领域分析与建模、测试驱动开发、架构设计、自动化构建和持续集成、敏捷开发方法论、微服务、云计算等顶尖技术领域。 了解更多公众号:编程道与术

评论

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