簡體   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