Spring Data Neo4j 从入门到精通(一)

大家好,最近在折腾Neo4j图数据库,Neo4j是啥我就不赘述了,怎么玩我也不说了,因为我懒。。。

本来是没有这个系列的,但是我在最近一周的爬坑里发现SDN的资料真的是少啊,要么也说得是含糊其辞,实在是受不了。。。

所以我就记录一下SDN的学习过程吧,互相学习。。。。。欢迎大家批评指正。。。。

正文如下:

SDN介绍

1、什么是SDN

    SDN全称Spring Data Neo4j,是开源Spring Data项目下一个项目,是Spring Data下的一个重要子项目,它提供了高级的特性以将注解的实体类映射到Neo4j图型数据库上。其模板编程模型类似于我们熟知的Spring模板,为与图的交互提供了基础,此外也用于高级的仓库支持。该项目旨在为NoSQL数据库操作提供便捷的支持,是为了让广大码农少写代码的福音。。。

2、如何下载SDN

如果你需要单独研究源码玩呢,请至http://projects.spring.io/spring-data-neo4j下载,在那里你也能找到很多关于SDN的信息。如果你使用Maven管理项目,请在Pom.xml加入如下依赖。我搞了半天不知道简书咋插入依赖代码,只能贴图了,sorry了同学们。

《Spring Data Neo4j 从入门到精通(一)》 pom.xml依赖

3、SDN能干什么

SDN是能够操作基于POJO实体将其映射到Neo4j的一种方法。SDN提供了许多优秀的工具能够操作Neo4j的GraphDatabaseService,可以使用底层API来获得最佳的性能和最大的自由度。总而言之,在适当的逻辑数量范围内(大约10000)使用SDN来操作Neo4j是非常爽的。

准备工作

    既然你都到了搜索SDN的程度了,我就默认你具有java和neo4j的基础。。。。不会也没关系,先去看一下这两者的从入门到放弃。。或者私信我,大家一起学习。。。。。

案例代码初始化一个社交网络:

public void createCypherNodeUse(GraphDatabaseService graphDB) {

try (Transaction tx = graphDB.beginTx()) {

Node userJohn = graphDB.createNode();

        userJohn.setProperty(“name”, “John Johnson”);

        userJohn.setProperty(“type”,”user”);

        Node userKate = graphDB.createNode();

        userKate.setProperty(“name”, “Kate Smith”);

        userKate.setProperty(“type”,”user”);

        Node userJack = graphDB.createNode();

        userJack.setProperty(“name”, “Jack Jeffries”);

        userJack.setProperty(“type”,”user”);

        Node movieFargo = graphDB.createNode(LabelCity.MOVIE);

        movieFargo.setProperty(“name”, “Fargo”);

        movieFargo.setProperty(“type”,”movie”);

        Node movieAlien = graphDB.createNode(LabelCity.MOVIE);

        movieAlien.setProperty(“name”, “Alien”);

        movieAlien.setProperty(“type”,”movie”);

        Node movieHeat = graphDB.createNode(LabelCity.MOVIE);

        movieHeat.setProperty(“name”, “Heat”);

        movieHeat.setProperty(“type”,”movie”);

        userJohn.createRelationshipTo(userKate, RelationNeo.IS_FRIEND_OF);

        userJohn.createRelationshipTo(userJack, RelationNeo.IS_FRIEND_OF);

        Relationship real1 = userJohn.createRelationshipTo(movieFargo, RelationNeo.HAS_SEEN);

        real1.setProperty(“Stars”, 5);

        Relationship real2 = userJack.createRelationshipTo(movieFargo, RelationNeo.HAS_SEEN);

        real2.setProperty(“Stars”, 4);

        Relationship real3 = userJack.createRelationshipTo(movieAlien, RelationNeo.HAS_SEEN);

        real3.setProperty(“Stars”, 5);

        Relationship real4 = userKate.createRelationshipTo(movieHeat, RelationNeo.HAS_SEEN);

        real4.setProperty(“Stars”, 3);

        tx.success();

    }catch (Exception e){

e.printStackTrace();

    }finally {

logger.info(“社交网络初始化完毕!”);

    }

}

大家可以直接卡卡西一下这个代码,执行一哈。。得到了如下的社交网络图,我使用的是neo4j browser获得,有用desktop的也行。具体怎么玩,自己百度一下,很多资料。

《Spring Data Neo4j 从入门到精通(一)》 社交网络图

《Spring Data Neo4j 从入门到精通(一)》 Neo4j Browser

在这个社交网络里,有用户节点、电影节点、介绍关系、朋友关系、看过这部电影的关系,以及可以根据电影喜欢程度为它们打1~5分。这是个很常见的Neo4j入门图。

JAVA POJO建模

如果你想向Neo4j中插入一个用户,且用户拥有一些属性,则运用java基础,很自然使用POJO建模。其中省略了getset。

public class User {

    String userId;

    String name;

    Setis Friend;

    Set<kanGuo> kanGuos;

    User referredBy;

}

public class Movie{

    String movieName;

    Set<kanGuo> kanGuos

}

public class kanGuo{

    User user;

    Movie movie;

    Integer stras;

}

到目前为止已经完成了所有SDN学习的准备工作,休息一下,下一篇正式开始。。。。。。其实我是饿了。

    原文作者:漳甲
    原文地址: https://www.jianshu.com/p/234ff78c3d5a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞