大家好,最近在折腾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了同学们。
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("社交网络初始化完毕!");
}
}
作者:漳甲
链接:https://www.jianshu.com/p/234ff78c3d5a