当前位置: 首页 > wzjs >正文

建设厅网站业绩备案公示期北京互联网公司网站建设

建设厅网站业绩备案公示期,北京互联网公司网站建设,个人wordpress主题,谷歌云安装wordpress文章目录 Neo4j OGM核心概念 Neo4j OGM体验项目地址Neo4j数据准备 Neo4j OGM Neo4j OGM(Object-Graph Mapping)是一个用于在Java应用程序中与Neo4j图数据库交互的库。它能够将对象模型与图数据模型之间进行映射,使得开发者可以更加方便地对图…

文章目录

  • Neo4j OGM
    • 核心概念
  • Neo4j OGM体验
    • 项目地址
    • Neo4j数据准备

Neo4j OGM

  • Neo4j OGM(Object-Graph Mapping)是一个用于在Java应用程序中与Neo4j图数据库交互的库。它能够将对象模型与图数据模型之间进行映射,使得开发者可以更加方便地对图数据进行操作,而无需编写大量的Cypher查询语句。
  • Neo4j OGM 提供了一个简洁的API,帮助开发者通过对象的方式来处理图数据,这样能够使代码更加清晰和易于维护。

核心概念

  1. 对象映射:Neo4j OGM 提供了将数据库中的节点和关系映射到Java对象的能力。开发者可以通过简单的注释来定义对象之间的映射关系。例如,可以使用 @NodeEntity 注解来表示一个节点实体,使用 @Relationship 注解来表示关系。
  2. 会话管理:Neo4j OGM 使用会话来管理数据的读取和写入。每个会话可以看作是一个与数据库的连接,开发者通过会话来执行CRUD操作(创建、读取、更新和删除),并处理对象的生命周期。
  3. 查询:虽然 OGM 封装了大部分操作,但它依然支持使用 Cypher 查询来进行复杂的数据操作。开发者可以直接通过 OGM 的接口来执行 Cypher 查询,返回对象。

Neo4j OGM体验

项目地址

  • neo4jAPILearn

Neo4j数据准备

  • 使用Neo4j官方电影案例
    在这里插入图片描述
    在这里插入图片描述
  1. 添加Maven依赖,在 pom.xml 中添加如下依赖:
<dependencies><dependency><groupId>org.neo4j</groupId><artifactId>neo4j-ogm-core</artifactId><version>4.0.15</version></dependency><dependency><groupId>org.neo4j</groupId><artifactId>neo4j-ogm-bolt-driver</artifactId><version>4.0.15</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.36</version><scope>provided</scope></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency>
</dependencies>
  1. 配置:创建SessionFactoryUtils类
import lombok.Getter;
import org.neo4j.ogm.config.Configuration;
import org.neo4j.ogm.session.SessionFactory;public class SessionFactoryUtils {private static final Configuration configuration=new Configuration.Builder().uri("bolt://neo4j:neo4jneo4j@192.168.1.21:7687").connectionPoolSize(150).connectionLivenessCheckTimeout(100).build();@Getterprivate static SessionFactory sessionFactory=new SessionFactory(configuration,"com.yang.ogm.pojo");
}
  1. 创建实体:Movie,MyPerson,ActedIn
  • Movie
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.neo4j.ogm.annotation.*;import java.util.List;@NodeEntity
@Setter
@Getter
@NoArgsConstructor
@ToString
public class Movie {@Id@GeneratedValueprivate Long id;private String title;private Long released;@Property("tagline")private String tagLine;//设置关系并且指定方向@Relationship(type = "ACTED_IN",direction = Relationship.Direction.INCOMING)private List<ActedIn> actedIns;
}
  • MyPerson
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.neo4j.ogm.annotation.*;import java.util.List;@NodeEntity(label="Person")
@Setter
@Getter
@NoArgsConstructor
@ToString
public class MyPerson {@Id@GeneratedValueprivate Long id;private String name;private Long born;//指定关系//@Relationship(type = "ACTED_IN",direction = Relationship.Direction.OUTGOING)//private List<Movie> movies;@Relationship(type = "ACTED_IN")private List<ActedIn> actedIns;//导演关系@Relationship(type = "DIRECTED")private List<Movie> directedMovies;//出品关系@Relationship(type = "PRODUCED")private List<Movie> producedMovies;//写作关系@Relationship(type = "WROTE")private List<Movie> wroteMovies;
}
  • ActedIn
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.neo4j.ogm.annotation.*;@RelationshipEntity(type = "ACTED_IN")
@Setter
@Getter
@ToString(exclude = {"person","movie"})
@NoArgsConstructor
public class ActedIn {@Id@GeneratedValueprivate Long id;@StartNode //关系中的开始节点private MyPerson person;@EndNode  //关系中的结束节点private Movie movie;private String[] roles;
}
  1. Person操作的服务层PersonService
import com.yang.ogm.pojo.MyPerson;
import com.yang.ogm.session.SessionFactoryUtils;
import org.neo4j.ogm.cypher.ComparisonOperator;
import org.neo4j.ogm.cypher.Filter;
import org.neo4j.ogm.model.Result;
import org.neo4j.ogm.session.Session;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;public class PersonService {private Session session;public PersonService() {this.session = SessionFactoryUtils.getSessionFactory().openSession();}/*** 根据id查询用户数据* @param id* @return*/public MyPerson queryPersonById(Long id) {return this.session.load(MyPerson.class, id);}public void savePerson(MyPerson person) {this.session.save(person);}public void deletePerson(MyPerson person) {this.session.delete(person);}public ArrayList<Long> deletePersonByName(String name) {Filter filter = new Filter("name", ComparisonOperator.EQUALS,name);return (ArrayList<Long>) this.session.delete(MyPerson.class,List.of(filter),true);}// depth默认为1。 -1加载全部数据 0仅加载当前节点属性 1加载实例将映射该对象的简单属性及其直接相关的对象public MyPerson queryPersonById(Long id, int depth) {return this.session.load(MyPerson.class,id,depth);}public List<MyPerson> queryPersonByName(String name) {Filter filter = new Filter("name",ComparisonOperator.EQUALS,name);return (List<MyPerson>) this.session.loadAll(MyPerson.class, filter);}public Result queryAllShortestPathsByCypher(String personName1, String persoName2){String cypher="""match(n:Person {name:$personName1}),(m:Person {name:$personName2}),p=allShortestPaths((n)-[*]-(m))return p""";HashMap<String, String> params = new HashMap<>();params.put("personName1", personName1);params.put("personName2", persoName2);return this.session.query(cypher,params);}
}
  1. CRUD 操作
import com.yang.ogm.pojo.Movie;
import com.yang.ogm.pojo.MyPerson;
import com.yang.ogm.service.PersonService;
import com.yang.ogm.session.SessionFactoryUtils;
import org.junit.Test;
import org.neo4j.driver.internal.InternalPath;
import org.neo4j.ogm.model.Result;
import org.neo4j.ogm.session.SessionFactory;import java.util.List;public class TestPersonService {private PersonService personService=new PersonService();@Testpublic void getSessionFactory(){SessionFactory sessionFactory = SessionFactoryUtils.getSessionFactory();System.out.println(sessionFactory);}@Testpublic void testQueryPersonById(){MyPerson myPerson = this.personService.queryPersonById(33L,2);System.out.println(myPerson);}@Testpublic void testQueryPersonByName(){List<MyPerson> list = this.personService.queryPersonByName("Tom Hanks");System.out.println(list);}@Testpublic void testQueryPersonByCypher(){Result result = this.personService.queryAllShortestPathsByCypher("Susan Sarandon", "Jessica Thompson");result.forEach(stringObjectMap -> {InternalPath.SelfContainedSegment[] arrays=(InternalPath.SelfContainedSegment[]) stringObjectMap.get("p");for (InternalPath.SelfContainedSegment segment : arrays) {System.out.println(segment);}});}@Testpublic void testSavePerson(){MyPerson myPerson = new MyPerson();myPerson.setName("沈腾");myPerson.setBorn(1970L);Movie movie = new Movie();movie.setTitle("飞驰人生");movie.setReleased(2019L);//添加关系 注意修改MyPerson类中的执行关系代码// myPerson.setMovies(List.of(movie));//// this.personService.savePerson(myPerson);// System.out.println(myPerson);}@Testpublic void testUpdate() {List<MyPerson> personList = personService.queryPersonByName("沈腾");MyPerson person = personList.get(0);person.setBorn(1980L);personService.savePerson(person);}@Testpublic void testDeletePersonByNmae() {Object result = personService.deletePersonByName("沈腾");System.out.println(result);}}
http://www.dtcms.com/wzjs/573697.html

相关文章:

  • 在家做的打字兼职的网站十大牌子网
  • 盐城高端网站建设移动应用开发专业就业前景
  • 网站的基本功能郉台网站建设
  • 视频网站建设的背景简介课程的网站建设
  • 杭州职称评审系统网站房地产做网站
  • 推进门户网站建设方案北京网站制作沈阳
  • 可做笔记的阅读网站wordpress如何重新安装
  • 石家庄知名网站建设怎么用 c文件做网站
  • 用python做网站和用php商务网站建设的调研
  • 个人网站可以做经营性的吗哈尔滨市建设工程信息
  • 城乡建设网站证件查询系统成都做一个小企业网站需要多少钱
  • 网站地图后缀素材网站 模板
  • 网站代码怎么打开入侵dedecms网站管理员密码
  • 网站服务器价格网页设计与网站建设设计报告
  • 如何用腾讯云做网站在线直播网站建设
  • 口碑好的秦皇岛网站建设哪里有网站设计常见问题
  • 服务器搭建网站软件淘客做网站
  • 以绿色为主色的网站模版怎么做平台网站吗
  • 银川哪家网络公司做网站做得好如何做旅游网站的思维导图
  • 手机网站dedecms产品推广方案 推广方案怎么写
  • 购物网站功能设计中小企业网站功能
  • 服务器上建设网站网易企业邮箱如何申请注册
  • 华为网站建设wordpress多站点用户互通
  • 企业网站源码搜一品资源网四川网站营销seo费用
  • 长春网站建设排名网站开发风险分析
  • 个股期权网站开发wordpress插件样式
  • 网站看不到排版怎么办网站开发联系方式
  • ui设计已经不火了最优惠的网站优化
  • 银行门户网站建设方案网站备案 时间
  • 建一个网站买完域名后应该怎么做百度推广公司地址