原标题:Spring认证中国教育管理中心-Spring Data Neo4j教程二(Spring中国教育管理中心)
6. 对象映射
以下部分将解释图表和域之间的映射过程。它分为两部分。第一部分解释了实际映射和可用工具,用于描述如何将节点、关系和属性映射到对象。第二部分将介绍 Spring Data 的对象映射基础知识。它提供了有关通用映射的宝贵提示,为什么您应该更喜欢不可变域对象以及如何使用 Java 或 Kotlin 对它们进行建模。
6.1。基于元数据的映射
要充分利用 SDN 中的对象映射功能,您应该使用注解对映射的对象进行@Node注解。尽管映射框架没有必要具有此注释(您的 POJO 已正确映射,即使没有任何注释),但它允许类路径扫描器查找并预处理您的域对象以提取必要的元数据。如果你不使用这个注解,你的应用程序在你第一次存储一个域对象时会受到轻微的性能影响,因为映射框架需要建立它的内部元数据模型,以便它知道你的域对象的属性以及如何坚持他们。
6.1.1.映射注释概述
来自 SDN
- @Node:在类级别应用以指示该类是映射到数据库的候选对象。
- @Id:应用于字段级别以标记用于标识目的的字段。
- @GeneratedValue:在字段级别应用,@Id以指定应如何生成唯一标识符。
- @Property:应用于字段级别以修改从属性到属性的映射。
- @CompositeProperty:在字段级别应用于 Map 类型的属性,应作为复合材料回读。请参阅复合属性。
- @Relationship:应用于字段级别以指定关系的详细信息。
- @DynamicLabels:应用于字段级别以指定动态标签的来源。
- @RelationshipProperties:在类级别应用以指示该类作为关系属性的目标。
- @TargetNode: 应用在一个类的字段上@RelationshipProperties,从另一端的角度来标记该关系的目标。
以下注释用于指定转换并确保与 OGM 的向后兼容性。
- @DateLong
- @DateString
- @ConvertWith
有关这方面的更多信息,请参阅转换。
来自 Spring Data commons
- @org.springframework.data.annotation.Id和 SDN一样@Id,其实@Id是用 Spring Data Common 的 Id-annotation 标注的。
- @CreatedBy:应用于字段级别以指示节点的创建者。
- @CreatedDate:应用于字段级别以指示节点的创建日期。
- @LastModifiedBy:应用于字段级别以指示对节点的最后更改的作者。
- @LastModifiedDate:在字段级别应用以指示节点的最后修改日期。
- @PersistenceConstructor:应用于一个构造函数,以在读取实体时将其标记为首选构造函数。
- @Persistent:在类级别应用以指示该类是映射到数据库的候选对象。
- @Version:应用于字段级别,用于乐观锁定并检查保存操作的修改。初始值为零,每次更新时都会自动增加。
- @ReadOnlyProperty:应用于字段级别以将属性标记为只读。该属性将在数据库读取期间被水合,但不受写入影响。当用于关系时,请注意,如果不相关,则该集合中的任何相关实体都不会保留。
查看第 10 章,了解有关审计支持的所有注释。
6.1.2.基本构建块:@Node
注解用于将@Node类标记为受管域类,受映射上下文的类路径扫描。
要将对象映射到图中的节点,反之亦然,我们需要一个标签来标识要映射到和从的类。
@Node有一个属性labels,允许您配置一个或多个标签,以便在读取和写入带注释的类的实例时使用。该value属性是 的别名labels。如果您不指定标签,则简单类名将用作主标签。如果您想提供多个标签,您可以:
- 为属性提供一个数组labels。数组中的第一个元素将被视为主标签。
- 为 提供一个值primar