当前位置: 首页 > article >正文

Springboot连接neo4j

一、Spring Data Neo4j 核心知识体系

1. 核心概念
  • 图数据库特性

    • 数据以 ​节点(Node)​ 和 ​关系(Relationship)​ 形式存储,支持属性(Property)。
    • 查询语言:Cypher(类似 SQL 的声明式语言)。
  • Spring Data Neo4j 定位

    • 基于 Spring Data 的抽象层,简化 Neo4j 操作(类似 JPA 对关系型数据库的封装)。
    • 提供注解驱动编程模型,将 Java 对象映射到图结构。

2. 实体映射基础
​**(1) 节点映射**
  • ​**@Node 注解**:
    • 功能:标记类为图数据库中的节点实体。
    • 参数:
      • value:指定节点标签(Label),默认使用类名(如 @Node("User"))。
    • 示例
      @Node("owl__Class")  // 节点标签为 owl__Class
      public class OwlClass { ... }
​**(2) 唯一标识符**
  • ​**@Id + @GeneratedValue**:
    • @Id:标记主键字段(对应 Neo4j 节点的内部 ID)。
    • @GeneratedValue:声明 ID 由数据库自动生成(不可手动赋值)。
    • 注意
      • 默认生成策略为 InternalIdGenerator(Neo4j 内部长整型 ID,不建议暴露给业务系统)。
      • 若需业务主键(如 UUID),需结合 @Property 定义额外字段(如 elementId)。
​**(3) 属性映射**
  • ​**@Property 注解**:
    • 功能:将 Java 字段映射到节点的属性。
    • 参数:name 指定属性名(默认与字段名一致)。
    • 示例
      @Property(name = "uri")  // 对应节点的 uri 属性
      private String uri;

3. 关系映射(核心难点)​
  • ​**@Relationship 注解**:

    • 功能:定义节点间的关联关系(对应 Neo4j 的边)。
    • 参数:
      • type:关系类型(如 "SUBCLASS_OF")。
      • direction:关系方向(默认 OUTGOING)。
    • 示例
      public class OwlClass {
          // 定义 "SUBCLASS_OF" 关系(指向父类)
          @Relationship(type = "SUBCLASS_OF", direction = OUTGOING)
          private OwlClass parentClass;
      }
  • 关系的双向管理

    • 需在关联双方实体类中分别定义关系(需保持一致性)。
    • 示例:Person 与 Company 的 WORK_AT 关系:
      // Person 实体
      public class Person {
          @Relationship(type = "WORK_AT", direction = OUTGOING)
          private Company company;
      }
      
      // Company 实体
      public class Company {
          @Relationship(type = "WORK_AT", direction = INCOMING)
          private Set<Person> employees;
      }

4. 查询与持久化
  • Repository 接口

    • 继承 Neo4jRepository<T, ID>,提供 CRUD 和自定义查询能力。
    • 示例
      public interface OwlClassRepository extends Neo4jRepository<OwlClass, Long> {
          // 自定义 Cypher 查询
          @Query("MATCH (c:owl__Class) WHERE c.uri = $uri RETURN c")
          OwlClass findByUri(String uri);
      }
  • 派生查询(Derived Queries)​

    • 根据方法名自动生成 Cypher 查询(如 findByUri(String uri))。
    • 限制:复杂查询仍需手动编写 Cypher。

http://www.kler.cn/a/589224.html

相关文章:

  • 蓝桥杯好题推荐---前缀和
  • 深度学习篇---Opencv中的Haar级联分类器
  • MyBatis注解
  • Github 2025-03-16 php开源项目日报 Top10
  • 未来社交媒体的发展趋势:TikTok 与虚拟现实的结合
  • CCF-CSP第34次认证第四题——货物调度【DP+剪枝】
  • 零基础使用鸿蒙NDK开发最简步骤
  • KVM安全模块生产环境配置与优化指南
  • 【模拟面试】计算机考研复试集训(第四天)
  • 工程化与框架系列(35)--前端微服务架构实践
  • 【2025年39期免费获取股票数据API接口】实例演示五种主流语言获取股票行情api接口之沪深指数最新分时MACD数据获取实例演示及接口API说明文档
  • Spring 扩展点总结与分析
  • 【论文笔记】FFA-Net: Feature Fusion Attention Network for Single Image Dehazing
  • Spring MVC源码分析の请求处理流程
  • 从过拟合到强化学习:机器学习核心知识全解析
  • R 语言科研绘图 --- 密度图-汇总
  • C/C++基数排序(Radix Sort) 的排序算法。
  • 深入理解TCP/IP网络模型及Linux网络管理
  • Solidity基础 -- 哈希算法
  • C++ QT零基础教学(二)