2011-03-17 3 views

답변

6

GraphDatabaseService.shutdown()을 수행 한 다음 반환 한 후 this과 같은 코드를 사용하여 데이터베이스 파일을 제거합니다.

getAllNodes()을 사용하여 모든 노드에서 반복하고 관계 및 노드 자체를 삭제할 수도 있습니다. 아마도 참조 노드를 삭제하지 마십시오.

사용 사례가 테스트 중이라면 ImpermanentGraphDatabase을 사용하면 시스템 종료 후 데이터베이스가 삭제됩니다.

ImpermanentGraphDatabase를 사용하려면 neo4j-kernel 테스트 jar/dependencies를 프로젝트에 추가하십시오. "tests.jar"로 끝나는 이름의 파일을 찾습니다. on maven central.

+0

파일을 삭제하는 것 외에 다른 방법이 있습니까? – zbdiablo

+0

http://wiki.neo4j.org/content/Testing_with_Neo4j#Use_the_ImpermanentGraphDatabase를 참조하십시오. – DNA

1

가장 쉬운 방법은 neo4j 데이터베이스로 디렉토리를 삭제하는 것입니다. 모든 테스트를 마친 후 junit 테스트에서이 작업을 수행합니다.

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

내가 neo4j 위키에서 찾았 생각 : 여기 파일이 neo4j 디렉토리입니다 제가 사용하는 기능입니다. 나는 this discussion 다른 해결책에서 발견했다. 방법을 명확하게 제공하는 Blueprint API을 사용할 수 있습니다.

1

nawroth와 마찬가지로 테스트를 위해 ImpermanentGraphDatabase를 사용해야합니다. 거의 모든 문제를 자동으로 수정합니다.

테스트하지 않는 경우 실제로 두 가지가 있습니다. 나는 일반적으로 두 가지 방법을 사용할 수 있습니다. 하나는 clearDB 메소드입니다.이 메소드에서는 재귀 적으로 DB 경로를 삭제합니다. 나는이에 대한 Fileutils의 라이브러리를 사용하고, 거의 한 줄의 코드입니다 :

FileUtils.deleteRecursively(new File(DB_PATH)); 

다른 하나는 removeAllNodes 방법을 사용하여, 참조 노드를 제외하고 데이터베이스에있는 모든 노드를 제거하는 것입니다.

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

주의하는 것이 중요 새 EmbeddedGraphDatabase 객체를 만들기 전에 clearDB 메서드를 호출해야한다는 것입니다 :이 같은 실행이에 대한 간단한 쿼리가있다. 이 객체를 생성 한 후에 removeAllNodes 메서드가 호출됩니다.

0

도우미 클래스에게 있습니다

Neo4jHelper.cleanDb(db); 

(이 org.springframework.data.neo4j.support.node.Neo4jHelper에서 제공하고 참조하는 DB가 GraphDatabaseService입니다) 당신은 또한이

덤프 기능 :

Neo4jHelper.dumpDb(); 
관련 문제