2016-03-14 2 views
0

Je peux connecter mon serveur neo4j en utilisant le client neo4j et tout fonctionne correctement. Pour les scénarios de tests unitaires, je souhaite utiliser un serveur local différent pour effectuer des tests unitaires sur ma couche DAL neo4j. J'ai donc essayé la version intégrée de neo4j. Je peux créer des noeuds et interroger les utiliser le dépréciéeUtiliser neo4j intégré avec le client neo4j

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

1) Quelle est la nouvelle façon de créer une instance embarqué Neo4j?

2) Comment puis-je interroger l'embarqué en utilisant le neo4jClient? essayé de se connecter avec un hôte local mais sans succès (la version embarquée a-t-elle un hébergeur?)

Répondre

0

Quelle est la nouvelle façon de créer une instance neo4j intégrée?

Vous l'avez déjà fait avec le code dans votre question!

The documentation on the hello world app for embedded neo4j montre ce code:

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

Vous êtes déjà là.

Comment puis-je interroger l'embarqué à l'aide de neo4jClient? a essayé la connexion avec l'hôte local, mais sans succès (est la version intégrée a hébergeur?)

Si le « neo4jclient » vous voulez dire l'outil que les gens utilisent dans leurs navigateurs pour visualiser des graphiques, voici comment faire . Lorsque vous créez une base de données neo4j intégrée, le code DB_PATH est important. Fondamentalement, vous finissez par créer un répertoire avec ce nom localement.

L'application navigateur neo4j peut être pointée sur n'importe quel chemin de graphe. Il ne s'exécute pas, il fonctionne avec le serveur, donc pratiquement ce que vous allez faire est de configurer le serveur pour qu'il pointe vers le répertoire que vous avez créé pour la base de données intégrée, et cela fonctionnera.

Voir this documentation, vous devez définir:

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

data/graph.db est le même que DB_PATH dans votre exemple intégré.

+0

dans la version 2.3.2 les classes marquées comme dépréciée – User1234

0

Vérifiez avec cet exemple, il vous aidera.

Application.java

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 { 
 

 
\t @Configuration 
 
\t @EnableNeo4jRepositories(basePackages = "hello") 
 
\t static class ApplicationConfig extends Neo4jConfiguration { 
 

 
\t \t public ApplicationConfig() { 
 
\t \t \t setBasePackage("hello"); 
 
\t \t } 
 

 
\t \t @Bean 
 
\t \t GraphDatabaseService graphDatabaseService() { 
 
\t \t \t 
 
\t \t \t return new GraphDatabaseFactory().newEmbeddedDatabase("C:/neo4j-community-2.1.7/data/graph.db"); \t \t 
 
\t \t } 
 
\t } 
 

 
\t @Autowired PersonRepository personRepository; 
 

 
\t @Autowired GraphDatabase graphDatabase; 
 

 
\t public void run(String... args) throws Exception { 
 

 
\t \t Person greg = new Person("Greg"); 
 
\t \t Person roy = new Person("Roy"); 
 
\t \t Person craig = new Person("Craig"); 
 
\t \t 
 
\t \t Person abc=new Person("ABC"); 
 
\t \t Person def=new Person("DEF"); 
 
\t \t Person ghi=new Person("GHI"); 
 

 
\t \t /*System.out.println("Before linking up with Neo4j...");*/ 
 
\t \t for (Person person : new Person[] { greg, roy, craig,abc,def,ghi }) { 
 
\t \t /* \t System.out.println(person);*/ 
 
\t \t } 
 

 
\t \t Transaction tx = graphDatabase.beginTx(); 
 
\t \t try { 
 
\t \t \t personRepository.save(greg); 
 
\t \t \t personRepository.save(roy); 
 
\t \t \t personRepository.save(craig); 
 
\t \t \t 
 
\t \t \t personRepository.save(abc); 
 
\t \t \t personRepository.save(def); 
 
\t \t \t personRepository.save(ghi); 
 
\t \t \t 
 

 
\t \t \t greg = personRepository.findByName(greg.name); 
 
\t \t \t greg.worksWith(roy); 
 
\t \t \t greg.worksWith(craig); 
 
\t \t \t personRepository.save(greg); 
 

 
\t \t \t roy = personRepository.findByName(roy.name); 
 
\t \t \t roy.worksWith(craig); 
 
\t \t \t // We already know that roy works with greg 
 
\t \t \t personRepository.save(roy); 
 

 
\t \t \t // We already know craig works with roy and greg 
 

 
\t \t // \t System.out.println("Lookup each person by name..."); 
 
\t \t \t for (String name : new String[] { greg.name, roy.name, craig.name }) { 
 
\t \t \t \t System.out.println("--->"+personRepository.findByName(name)); 
 
\t \t \t } 
 

 
\t \t // \t System.out.println("Looking up who works with Greg..."); 
 
\t \t \t for (Person person : personRepository.findByTeammatesName("Greg")) { 
 
\t \t \t \t System.out.println("==>>"+person.name + " works with Greg."); 
 
\t \t \t } 
 
\t \t 
 
\t \t \t tx.success(); 
 
\t \t } finally { 
 
\t \t \t tx.close(); 
 
\t \t } 
 
\t } 
 

 
\t public static void main(String[] args) throws Exception { 
 
\t \t FileUtils.deleteRecursively(new File("C:/neo4j-community-2.1.7/data/graph.db")); 
 

 
\t \t SpringApplication.run(Application.class, args); 
 
\t } 
 
}

créer un fichier POJO, personne.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() { 
 
    \t 
 
    } 
 
    
 
    public Person(String name) { 
 
    \t 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; 
 
    } 
 

 
}

et créer 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); 
 

 
}

+0

Il ne correspond pas à mon utilisation cas, j'ai une classe DAL neo4j (auto-implémentée) qui se connecte à neo4j se rver en utilisant la classe neo4jClient (en utilisant maven ava-neo4j-client). Maintenant, ce que je veux faire est d'utiliser l'Embedded pour init les données et l'interroger en utilisant mon DAL neo4j pour effectuer des tests unitaires. – User1234