首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Spring Boot 整合 Neo4j:Spring Data Neo4j 實戰入門

     編輯:Java 綜合教學

Spring Boot 整合 Neo4j:Spring Data Neo4j 實戰入門

Neo4j 是原生圖資料庫,擅長處理高度關聯數據。Spring Data Neo4j (SDN) 提供 Repository 抽象、物件圖映射 (OGM)、Cypher 查詢支援,讓 Spring Boot 應用能像操作 JPA 一樣操作圖數據。本文示範:節點實體建模、關係映射、Repository 定義、嵌入式資料庫配置、測試驗證完整流程。

1. 領域模型:用戶 —從屬於— 組

資料模型:User 從屬於 Group

2. 節點實體建模

User 節點

@NodeEntity
public class User {
    @GraphId Long id;
    private String name;
    
    @Relationship(type = "從屬", direction = Relationship.OUTGOING)
    private Group group;
    
    // getter/setter 略
}

Group 節點

@NodeEntity
public class Group {
    @GraphId Long id;
    private String name;
    // getter/setter 略
}

3. Repository 介面

@Repository
public interface UserRepository extends GraphRepository<User> {
    User findByName(String name);
}

GraphRepository 提供基本 CRUD、分頁、排序等方法,findByName 由 SDN 自動實現(派生查詢)。

4. 嵌入式資料庫配置

src/main/resources/application.properties:

spring.data.neo4j.compiler=org.neo4j.ogm.compiler.MultiStatementCypherCompiler
spring.data.neo4j.driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
spring.data.neo4j.uri=file:///test/graph.db

嵌入式模式適合開發測試,生產環境建議使用 Bolt 驅動連接獨立 Neo4j 服務器。

5. 測試驗證

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Neo4jConfig.class)
public class Neo4jTest {
    private static final Logger log = LoggerFactory.getLogger(Neo4jTest.class);
    
    @Autowired UserRepository userRepository;
    
    @Before
    public void addData() {
        Group group = new Group(); group.setName("admins");
        User user = new User(); user.setName("admin"); user.setGroup(group);
        userRepository.save(user);
        Assert.notNull(user.getId());
    }
    
    @Test
    public void getData() {
        User user = userRepository.findByName("admin");
        Assert.notNull(user);
        log.info("user name={}, group name={}", user.getName(), user.getGroup().getName());
    }
}

6. 執行結果

================== user name=admin; group name=admins ==================

7. 進階提示

  • 索引:在頻繁查詢屬性上添加 @Index(unique = true)
  • 自定義 Cypher:使用 @Query("MATCH ...") 註解實現複雜圖遍歷
  • 事務:@Transactional 支援圖操作原子性
  • 遷移到 Bolt:將 driver 改為 org.neo4j.ogm.drivers.bolt.driver.BoltDriver,uri 改為 bolt://localhost:7687

Spring Data Neo4j 讓圖資料庫操作變得像關係型資料庫一樣直觀,是構建推薦系統、社交網絡、欺詐偵測等關聯密集型應用的利器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved