2016-11-14 6 views
0

Ich habe diese Art Beispielprojekt HEREDatenbankmigrationen mit Neo4j und Spring

in dieser Probe Daten, versuche ich Flyway zu verwenden Datenbank-Migration mit Neo4j Datenbank zu implementieren. Ich kann normales SQL mit H2-Datenbank erstellen und einfügen (ich verwendete H2-Datenbank in meinem Beispielprojekt), aber ich weiß nicht, wie man es mit Neo4j-Graphdatenbank implementiert.

Ich brauche Daten beim Start der Anwendung zu initialisieren. Dies ist, wie ich versuche, meine Migration Code zu setzen:

public class V1_1__InitMaster implements SpringJdbcMigration { 
public void migrate(JdbcTemplate jdbcTemplate) throws Exception { 
    /* 
    //Example using h2 database 
    jdbcTemplate.execute("CREATE TABLE Unit (" 
      + "code VARCHAR(30)," 
      + "name VARCHAR(30)," 
      + "value DOUBLE" 
      + ");"); 

    jdbcTemplate.execute("INSERT INTO Unit ('ft','Feet',1);"); 

    //How I can save my init data to neo4j database in here? 
    for(String[] unitString : initDataMaster.unitList){ 
     //I got list unitList here 
    } 
    */ 
} 
} 

Ich las diesen Page über Zugweg, die Datenbankmigration mit Neo4j verwalten kann, und ich sehe einige Seiten, die über Flyway Integration mit Frühlings- und Neo4j erklären.

Was ich fragte, ist, wie ich meine Initialisierungsdaten speichern und Flyway verwenden, um es zu verwalten und es mit Neo4j und Spring zu integrieren?

+1

Ich bin mir nicht sicher über Migration von Zugwegen, aber haben Sie sich https://github.com/fbiville/liquigraph angesehen? Es wurde von Liquibase inspiriert und ist spezifisch für Neo4j-Migrationen. – digx1

+0

Ja, ich bin. Aber der Liquigraph Mangel an Dokumentation denke ich, und ich brauche Java-Konfiguration + Java Beispielcode. Es ist schwer, diese Dokumentation zu verstehen. Zuerst möchte ich es verwenden, aber nach der Überprüfung der Dokumentation und versuchen, tiefer zu schauen, bin ich mir nicht sicher, wie man es benutzt. –

+0

Ich dachte, es wurde angemessen dokumentiert: http://fbiville.github.io/liquigraph/latest/index.html. Gibt es etwas Detaillierteres, das du brauchst? – digx1

Antwort

4

EDIT

Ein neuer Frühling Boot-Starter (für Liquigraph 3.x nur) eingeführt wurde, mit Frühlings-Stiefel, die einen Link am Ende bleibt der Bezug zu folgen jetzt in vollem Umfang zu arbeiten.

Alles, was Sie tun müssen, ist den Starter verwenden liquigraph-spring-boot-starter und spring-boot-starter-jdbc, ermöglicht die automatische Konfiguration (über @EnableAutoConfiguration) und erklären, ein mindestens liquigraph.url in application.properties zur Verfügung stellen).

erste Antwort

Liquigraph ist für die Verwaltung von Migrationen mit Neo4j entwickelt. Abhängig von der Version von Neo4j, die Sie unterstützen möchten, wählen Sie entweder Liquigraph 2.x (für Neo4j 2.x) oder Liquigraph 3.x (für Neo4j 3.x).

Die Integration mit Spring ist unkompliziert. Sie können entweder einen oder einen JDBC URI (und Benutzer/Kennwort) an den Konfigurationsersteller übergeben und den Migrationslauf programmgesteuert auslösen.

Die Dokumentation beschreibt dies here (nicht spezifisch für Spring, das ist die agnostische Möglichkeit, Migrationen programmgesteuert auszuführen).

Die Konfiguration könnte wie folgt aussehen (vorausgesetzt, Sie die DataSource irgendwo zugänglich durch diese Konfigurationsklasse definieren):

@Configuration 
class MigrationConfiguration { 

    @Bean 
    public MethodInvokingFactoryBean liquigraph(org.liquigraph.core.configuration.Configuration liquigraphConfig) { 
     MethodInvokingFactoryBean method = new MethodInvokingFactoryBean(); 
     method.setTargetObject(new Liquigraph()); 
     method.setTargetMethod("runMigrations"); 
     method.setArguments(new Object[] {liquigraphConfig}); 
     return method; 
    } 

    @Bean 
    public org.liquigraph.core.configuration.Configuration configuration(DataSource dataSource) { 
     return new ConfigurationBuilder() 
      .withDataSource(dataSource) 
      .withMasterChangelogLocation("changelog.xml") 
      .withRunMode() 
      .build(); 
    } 
} 

Das vollständige Beispiel ist hier: https://github.com/fbiville/liquigraph-spring-boot-example.

+0

Woah, das ist so cool !! Unterstützt es auch JPA QueryBuilder? Es wird großartig sein, wenn JPA QueryBuilder es auch unterstützt. Unterstützt changelog nur XML? Gibt es ein Beispiel für das Java-Changelog? –

+0

Der bevorzugte Weg ist die Verwendung von XML im Moment. Sie könnten Java-Instanzen des Liquigraph-Modells direkt definieren (siehe https://github.com/fbiville/liquigraph/blob/master/liquigraph-core/src/main/java/org/liquigraph/core/model/Changelog.java). aber das ist nicht zu empfehlen. JPA QueryBuilder-Unterstützung ist nicht geplant. Wir könnten vielleicht sehen, ob wir uns in Zukunft mit JCypher integrieren können (https://github.com/Wolfgang-Schuetzelhofer/jcypher/wiki/Query-DSL-Expressions). – Rolf

+0

Ahh, okay. Ich werde versuchen, alle Daten auf XML zu schreiben. Vielen Dank @Rolf –

Verwandte Themen