大家好,最近在折腾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了同学们。
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的也行。具体怎么玩,自己百度一下,很多资料。
在这个社交网络里,有用户节点、电影节点、介绍关系、朋友关系、看过这部电影的关系,以及可以根据电影喜欢程度为它们打1~5分。这是个很常见的Neo4j入门图。
JAVA POJO建模
如果你想向Neo4j中插入一个用户,且用户拥有一些属性,则运用java基础,很自然使用POJO建模。其中省略了getset。
public class User {
String userId;
String name;
Setis Friend;
Set
User referredBy;
}
public class Movie{
String movieName;
Set
}
public class kanGuo{
User user;
Movie movie;
Integer stras;
}
到目前为止已经完成了所有SDN学习的准备工作,休息一下,下一篇正式开始。。。。。。其实我是饿了。