Neo4j+Spring data 開發關係網絡案例

Neo4J環境搭建

1、      安裝Neo4J數據庫

1)        下載neo4j :https://neo4j.com/download/?ref=home     開發請下載社區版,生產部署下載企業版。html

2)        安裝java

a)        Windows系統安裝git

i.             與通常軟件安裝方式同樣,在啓動時,須要選擇數據庫的目錄,請根據自身須要選擇github

Clipboard Image.png

ii.             啓動完成後,打開瀏覽器訪問web控制檯:http://localhost:7474web

默認用戶名和密碼均爲:neo4jspring

b)       Linux系統安裝數據庫

i.             下載tar壓縮包,解壓到安裝目錄瀏覽器

ii.             執行命令$NEO4J_HOME/bin/neo4j console單元測試

iii.             打開瀏覽器訪問web控制檯:http://localhost:7474測試

iv.             默認用戶名和密碼均爲:neo4j

2、      Neo4J與Spring Data集成開發

1)        新建spring項目,pom.xml文件中加入所需依賴

Clipboard Image.png

2)        新建Neo4jConfig.java配置類

用於配置neo4j的SessionFactory,事物管理器,數據庫鏈接相關

Clipboard Image.png

Neo4j.properties文件內容:

neo4j.ogm.driver = org.neo4j.ogm.drivers.http.driver.HttpDriver
neo4j.ogm.URI = http://neo4j_dev:qaz123@localhost:7474

Neo4j支持多種協議調用,此處咱們使用http 協議

注:因爲spring-data-neo4j版本更迭較快,每一個版本的配置會略有不一樣,具體配置方法請參考spring-data 官方github主頁,本示例使用的是spring的最新版本:

https://github.com/spring-projects/spring-data-neo4j/tree/master

3、     用戶、公司、手機設備關係開發示例

業務背景:

    一個用戶屬於一家公司,一個用戶可擁有多個設備,多個用戶可同時屬於一家公司,下面的示例是咱們在spring data +neo4j環境及下開發出這樣的一個業務關係模型。

1)        建立實體文件

每一個實體必須有主鍵id,爲Long類型,必須加上@GraphId註解用於標識Node節點的Id

關係結構使用@Relationship註解,type自定義,用於標識是何種關係類型,direction用於定義本節點在這個關係中是處於哪一方,默認是OUTGOING

在此業務場景下,咱們須要創建三個角色型的實體(用戶,公司,設備),三個關係型實體(用戶到公司,公司到用戶,用戶到設備)

實體中所用到的註解說明:

@NodeEntity : 節點實體註解

@GraphId:實體ID 字段

@Index:添加索引的字段

@Relationship(type= 「XXX」) :關係註解,type自定義,需跟關係實體中的type一致

a)        User實體文件

Clipboard Image.png

b)       Company實體

Clipboard Image.png

c)        Device實體

Clipboard Image.png

d)       關係類型實體

關係型實體註解說明

@RelationshipEntity(type = 「XXX」) :標識位關係實體

@StartNode :關係的開始節點

@EndNode :關係的結束節點

User2Company

Clipboard Image.png

User2Device

Clipboard Image.png

Compayn2User

Clipboard Image.png

2)        新建repository接口,功能相似於dao文件,用於和neo4j數據庫進行交互

可直接繼承Neo4jRepository<T>或PagingAndSortingRepository<T,Long>,前者是無分頁的操做接口,後者是能夠進行分頁和排序操做的接口,用戶也可在本身的接口中自定義擴展

例如:

Clipboard Image.png

3)        建立Service組件

根據分層結構設計原則,咱們還須要一個service層,用於封裝業務操做邏輯

這裏是列出User的Service實現,其餘Service基本相同。

Clipboard Image.png

實現類

Clipboard Image.png

4)        編寫單元測試

Clipboard Image.png

Clipboard Image.png

至此,咱們已經建立一個簡單的公司與用戶,用戶與設備之間的關係的圖譜,在瀏覽器UI界面能夠看到咱們建立的關係圖譜結果

Clipboard Image.png

4、      CQL語言

上面的自定義查詢中使用到了Neo4J專用的查詢語言,稱之爲CQL,其語法相似於Sql語言。

如需瞭解更多,請移步:http://www.w3cschool.cn/neo4j/neo4j_cql_introduction.html

相關文章
相關標籤/搜索