繁体   English   中英

将嵌入式neo4j与neo4j客户端一起使用

[英]Use embedded neo4j with neo4j client

我可以使用neo4jClient连接neo4j服务器,并且一切正常。

对于单元测试方案,我想使用其他本地服务器对neo4j DAL层执行单元测试。

所以我尝试了neo4j嵌入式版本。 我可以创建节点并使用已弃用的节点查询它们

GraphDatabaseService graphDb = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH)
ExecutionEngine engine = new ExecutionEngine(graphDb);

1)创建嵌入式neo4j实例的新方法是什么?

2)如何使用neo4jClient查询嵌入式? 尝试与本地主机连接,但未成功(嵌入式版本是否具有Web主机?)

创建嵌入式neo4j实例的新方法是什么?

您实际上已经使用问题中的代码做到了!

嵌入式neo4j的hello world应用程序上的文档显示了以下代码:

graphDb = new GraphDatabaseFactory().newEmbeddedDatabase( DB_PATH );

所以你已经在那里。

如何使用neo4jClient查询嵌入式? 尝试与本地主机连接,但未成功(嵌入式版本是否具有Web主机?)

如果用“ neo4jclient”来表示人们在浏览器中用来可视化图形的工具,那么这就是这样做的方法。

创建嵌入式neo4j数据库时, DB_PATH很重要。 基本上,您最终只是在本地使用该名称创建目录。

neo4j浏览器应用程序可以指向任何图形路径。 它不是嵌入式运行的,而是与服务器一起运行的,因此,实际上,您要做的是将服务器配置为指向您为嵌入式DB创建的目录,然后它就可以工作了。

请参阅此文档 ,您需要设置:

org.neo4j.server.database.location=data/graph.db

其中data/graph.db与嵌入式示例中的DB_PATH相同。

查看此示例,它将为您提供帮助。

应用程序

 package hello; import java.io.File; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseFactory; import org.neo4j.kernel.impl.util.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.neo4j.config.EnableNeo4jRepositories; import org.springframework.data.neo4j.config.Neo4jConfiguration; import org.springframework.data.neo4j.core.GraphDatabase; @SpringBootApplication public class Application implements CommandLineRunner { @Configuration @EnableNeo4jRepositories(basePackages = "hello") static class ApplicationConfig extends Neo4jConfiguration { public ApplicationConfig() { setBasePackage("hello"); } @Bean GraphDatabaseService graphDatabaseService() { return new GraphDatabaseFactory().newEmbeddedDatabase("C:/neo4j-community-2.1.7/data/graph.db"); } } @Autowired PersonRepository personRepository; @Autowired GraphDatabase graphDatabase; public void run(String... args) throws Exception { Person greg = new Person("Greg"); Person roy = new Person("Roy"); Person craig = new Person("Craig"); Person abc=new Person("ABC"); Person def=new Person("DEF"); Person ghi=new Person("GHI"); /*System.out.println("Before linking up with Neo4j...");*/ for (Person person : new Person[] { greg, roy, craig,abc,def,ghi }) { /* System.out.println(person);*/ } Transaction tx = graphDatabase.beginTx(); try { personRepository.save(greg); personRepository.save(roy); personRepository.save(craig); personRepository.save(abc); personRepository.save(def); personRepository.save(ghi); greg = personRepository.findByName(greg.name); greg.worksWith(roy); greg.worksWith(craig); personRepository.save(greg); roy = personRepository.findByName(roy.name); roy.worksWith(craig); // We already know that roy works with greg personRepository.save(roy); // We already know craig works with roy and greg // System.out.println("Lookup each person by name..."); for (String name : new String[] { greg.name, roy.name, craig.name }) { System.out.println("--->"+personRepository.findByName(name)); } // System.out.println("Looking up who works with Greg..."); for (Person person : personRepository.findByTeammatesName("Greg")) { System.out.println("==>>"+person.name + " works with Greg."); } tx.success(); } finally { tx.close(); } } public static void main(String[] args) throws Exception { FileUtils.deleteRecursively(new File("C:/neo4j-community-2.1.7/data/graph.db")); SpringApplication.run(Application.class, args); } } 

创建一个pojo文件Person.java

 package hello; import java.util.HashSet; import java.util.Set; import org.neo4j.graphdb.Direction; import org.springframework.data.neo4j.annotation.Fetch; import org.springframework.data.neo4j.annotation.GraphId; import org.springframework.data.neo4j.annotation.NodeEntity; import org.springframework.data.neo4j.annotation.RelatedTo; @NodeEntity public class Person { @GraphId Long id; public String name; public Person() { } public Person(String name) { this.name = name; } @RelatedTo(type="TEAMMATE", direction=Direction.BOTH) public @Fetch Set<Person> teammates; public void worksWith(Person person) { if (teammates == null) { teammates = new HashSet<Person>(); } teammates.add(person); } public String toString() { String results = name + "'s teammates include\\n"; if (teammates != null) { for (Person person : teammates) { results += "\\t- " + person.name + "\\n"; } } return results; } } 

并创建PersonRepository.java

 package hello; import org.springframework.data.repository.CrudRepository; public interface PersonRepository extends CrudRepository<Person, String> { Person findByName(String name); Iterable<Person> findByTeammatesName(String name); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM