2011-03-17 23 views

Respuesta

6

Simplemente realice un GraphDatabaseService.shutdown() y después de que haya regresado, elimine los archivos de la base de datos (usando el código como this).

También puede usar getAllNodes() para iterar sobre todos los nodos, eliminar sus relaciones y los nodos. Tal vez evite borrar el nodo de referencia.

Si su caso de uso está probando, entonces podría usar el ImpermanentGraphDatabase, que borrará la base de datos después del cierre.

Para usar ImpermanentGraphDatabase, agregue el archivo neo4j-kernel prueba jar/dependency a su proyecto. Busque el archivo con un nombre que termine con "tests.jar" on maven central.

+0

¿Hay alguna manera además de eliminar archivos? – zbdiablo

+0

Ver http://wiki.neo4j.org/content/Testing_with_Neo4j#Use_the_ImpermanentGraphDatabase – DNA

1

Creo que la manera más fácil es eliminar un directorio con la base de datos neo4j. Lo hago en mis pruebas junit después de ejecutar todas las pruebas. Aquí es una función que utilizo en archivo es el directorio Neo4j:

public static void deleteFileOrDirectory(final File file) { 
    if (file.exists()) { 
     if (file.isDirectory()) { 
      for (File child : file.listFiles()) { 
       deleteFileOrDirectory(child); 
      } 
     } 
     file.delete(); 
    } 
} 

Creo que he encontrado en Neo4j wiki. He encontrado en this discussion otra solución. Puede usar Blueprint API, que proporciona el método claro.

1

Como dijo nawroth, para las pruebas debe usar la base de datos ImpermanentGraphDatabase. Es casi auto-repara todos tus problemas.

Si no está probando, hay dos maneras realmente. Generalmente tengo dos métodos disponibles para mí. Uno es el método clearDB, en el cual borro recursivamente la ruta DB. Yo uso la biblioteca FileUtils para esto, y es más o menos una sola línea de código:

FileUtils.deleteRecursively(new File(DB_PATH)); 

El otro es para eliminar todos los nodos de la base de datos excepto nudo de referencia, utilizando el método removeAllNodes. Hay una consulta sencilla para esto, que se ejecuta como esto:

engine.execute("START n = node(*), ref = node(0) WHERE n<>ref DELETE n"); 

importante a destacar es que usted tiene que llamar al método clearDB Antes de crear un nuevo objeto EmbeddedGraphDatabase. El método removeAllNodes se llama DESPUÉS de haber creado este objeto.

0

Hay una clase de ayuda

Neo4jHelper.cleanDb(db); 

(se trata de org.springframework.data.neo4j.support.node.Neo4jHelper y el PP se hace referencia es un GraphDatabaseService)

También tiene la capacidad de volcarlo:

Neo4jHelper.dumpDb(); 
Cuestiones relacionadas