国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - springBoot 與neo4j的簡單整合示例

springBoot 與neo4j的簡單整合示例

2021-07-11 18:03kary Java教程

這篇文章主要介紹了springBoot 與neo4j的簡單整合示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

neo4j簡介

neo4j是基于java語言實現的世界領先的圖形數據庫, 是一個高性能的圖形存儲,具有成熟和強大的數據庫所需的所有功能,如友好的查詢語言(cypher)和acid事務。對于許多應用程序,與關系數據庫相比,neo4j提供了數量級的性能優勢。主要應用于圖檢索和關系計算。其優點在于:

  • 節點沒上線(3.0以后去掉了限制)
  • 擴展性很好,支持集群和企業版
  • 數據etl有豐富的工具支持,自帶gui
  • 良好的webui

更加詳細的介紹參考:https://neo4j.com/docs/getting-started/current/graphdb-concepts/

neo4j安裝

neo4j在不同部署環境中的安裝,例如linux,mac os,windows,debian,docker或capi flash,以下介紹在windows系統中的安裝方法:

1.下載最新安裝包

點擊以下地址:https://neo4j.com/download-center/,選擇社區服務器下相應版本下載即可。

springBoot 與neo4j的簡單整合示例

2.安裝neo4j

解壓安裝包到相應目錄后在bin目錄下打開命令提示符或者任意地方打開命令提示符進入bin目錄下

springBoot 與neo4j的簡單整合示例

如圖的四個命令:
(1)進入bin目錄下
(2)neo4j 查詢相應命令
(3)install-service 安裝neo4j服務
(4)start 啟動服務

服務安裝成功之后瀏覽器輸入 http://localhost:7474/browser/ 即可訪問登錄頁面,其中用戶名密碼都為neo4j,登陸后可修改密碼,登錄頁面如下圖

springBoot 與neo4j的簡單整合示例

其余環境的服務安裝方法可參考:https://neo4j.com/docs/operations-manual/3.5/installation/

neo4j與springboot簡單整合

大概了解了neo4j和進行安裝之后,接下來就對neo4j和springboot進行一個簡單的整合,如圖實例我們依據圖中人物與電影的關系建立一個簡單的demo(圖片源自官方文檔)

springBoot 與neo4j的簡單整合示例

1.建立一個springboot項目

springBoot 與neo4j的簡單整合示例

2.引入neo4j的pom

?
1
2
3
4
5
6
<dependencies>
<dependency>
 <groupid>org.springframework.boot</groupid>
 <artifactid>spring-boot-starter-data-neo4j</artifactid>
</dependency>
</dependencies>

3.建立一個person和movie的實體類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@nodeentity
public class person {
 @id
 @generatedvalue
 private long id;
 private string name;
 private string born;
 public person() {// 從 neo4j api 2.0.5開始需要無參構造函數
 
 }
 public person(string name, string born) {
 this.name = name;
 this.born = born;
 }
 //省略getter and setter
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@nodeentity
public class movie {
 @id
 @generatedvalue
 private long id;
 private string title;
 private string released;
 public movie() {
 
 }
 public movie(string title, string released) {
 this.title = title;
 this.released = released;
 }
 //省略getter and setter

需要注意的是類上@nodeentity,標識這是一個節點,實體類中還需要一個無參構造方法,從 neo4j api 2.0.5開始需要的。

4.建立movierepository和personrepository

?
1
2
3
public interface movierepository extends crudrepository<movie, long> {
 movie findbytitle(string title);
}
?
1
2
3
public interface personrepository extends crudrepository<person, long> {
 person findbyname(string name);
}

其中繼承crudrepository已經可以實現簡單的crud了

5.在person中建立movie與演員、導演的指向關系

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@relationship(type = "acted_in", direction = relationship.outgoing)
public set<movie> actors;
 
public void addactor(movie movie) {
if (actors == null) {
 actors = new hashset<>();
}
actors.add(movie);
}
 
@relationship(type = "directed", direction = relationship.outgoing)
public set<movie> directors;
 
public void adddirector(movie movie) {
if (directors == null) {
 directors = new hashset<>();
}
directors.add(movie);
}

@relationship這個注解表示關系,type是關系名稱,direction是方向,例子中的是person——>movie

6.application.properties配置文件中建立數據庫連接

?
1
2
3
4
#本地連接可以省略該行,非本地配置改對應ip
#spring.data.neo4j.uri=bolt://localhost
spring.data.neo4j.username=neo4j
spring.data.neo4j.password=123456

7.單元測試

(1)創建movie

?
1
2
3
4
5
6
7
@test
public void testsavemovie() {
movie m1 = new movie("無問西東", "2018");
movie m2 = new movie("羅曼蒂克消亡史", "2016");
movierepo.save(m1);
movierepo.save(m2);
}

springBoot 與neo4j的簡單整合示例

可以看到數據庫已經建立兩部電影的相關節點

(2)創建person及其與movie的關系

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@test
public void testsaveperson() {
person p1 = new person("章子怡", "1979");
person p2 = new person("李芳芳", "1976");
person p3 = new person("程耳", "1970");
movie m1 = movierepo.findbytitle("羅曼蒂克消亡史");
movie m2 = movierepo.findbytitle("無問西東");
if (m1!=null) {
p1.addactor(m1);
p3.adddirector(m1);
}
if (m2!=null) {
p1.addactor(m2);
p2.adddirector(m2);
}
personrepo.save(p1);
personrepo.save(p2);
personrepo.save(p3);
}

springBoot 與neo4j的簡單整合示例

如圖,測試用例已經建立起了電影與導演、演員之間的聯系

(3)findmoviebytitle

?
1
2
3
4
@test
public void testfindbytitle() {
movie movie = movierepo.findbytitle("羅曼蒂克消亡史");
}

查詢出相應的結果符合預期

?
1
2
3
4
5
{
 "id":26,
 "title":"羅曼蒂克消亡史",
 "released":"2016"
}

(4)findpersonbyname

?
1
2
3
4
@test
public void testfindbyname() {
person person = personrepo.findbyname("章子怡");
}

這里需注意的是,該演員對應了兩部電影,查詢個人信息的同時應該包含兩部電影

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
 "id":27,
 "name":"章子怡",
 "born":"1979",
 "actors":[
 {
  "id":25,
  "title":"無問西東",
  "released":"2018"
 },
 {
  "id":26,
  "title":"羅曼蒂克消亡史",
  "released":"2016"
 }
 ]
}

查詢結果也符合預期

還有很多findall、delete就不在一一列舉了,至此springboot與neo4j的簡單整合就完成了

demo源碼點擊下載

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000017911964

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人精品免高潮在线观看 | 欧美日韩精品 | 91免费在线播放 | 久久久久久一级片 | 亚洲伊人伊色伊影伊综合网 | 精品在线一区二区 | 亚洲精品乱码久久久久久麻豆不卡 | 一本大道av伊人久久综合 | 在线观看午夜免费视频 | av一区二区三区四区 | 国产精品免费久久 | 国产午夜视频在线观看 | 亚洲视频一区在线 | 午夜激情影院 | 亚洲精选久久 | 日本不卡免费新一二三区 | 午夜免费电影 | 欧美日韩亚洲一区 | av黄色在线免费观看 | 国产黄色大片免费在线观看 | 一区二区三区动漫 | 欧美激情一区二区三级高清视频 | 日本中文字幕在线播放 | 日韩在线精品 | 亚洲在线视频 | 成人免费日韩 | av色伊人久久综合一区二区 | 亚洲精品欧美精品 | 亚洲一区国产视频 | 国产亚洲精品精品国产亚洲综合 | 国内精品一区二区三区视频 | 久草国产视频 | 91xxx在线观看 | 国产亚洲精品久久久 | 91激情视频 | 99精品国产一区二区三区 | 欧美一级淫片丝袜脚交 | 黄色影片免费观看 | 日韩成人影院 | 五月婷婷视频 | 日韩免费av一区二区 |