Neo4j ialah pangkalan data graf berkuasa yang cemerlang dalam mengurus data yang sangat bersambung. Apabila digabungkan dengan Java, ia menyediakan penyelesaian yang mantap untuk membina aplikasi yang memerlukan pemodelan hubungan yang kompleks. Siaran ini akan membimbing anda melalui asas penggunaan Neo4j dengan Java, meliputi persediaan, pertanyaan dan amalan terbaik.
Untuk bermula, anda perlu menambahkan pemacu Java Neo4j pada projek anda. Jika anda menggunakan Maven, tambahkan kebergantungan berikut pada pom.xml anda:
<dependency> <groupId>org.neo4j.driver</groupId> <artifactId>neo4j-java-driver</artifactId> <version>5.2.0</version> </dependency>
Setelah anda menambahkan kebergantungan, anda boleh mewujudkan sambungan ke pangkalan data Neo4j anda:
import org.neo4j.driver.*; public class Neo4jBasicExample { public static void main(String[] args) { try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "your_password")); Session session = driver.session()) {
// Create nodes and a relationship String createQuery = "CREATE (a:Person {name: 'Alice'})-[:FRIENDS_WITH]->(b:Person {name: 'Bob'})"; session.run(createQuery); System.out.println("Nodes and relationship created successfully."); } } }
import org.neo4j.driver.*; public class Neo4jQueryExample { public static void main(String[] args) { try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "your_password")); Session session = driver.session()) { // Query nodes and relationships String matchQuery = "MATCH (a:Person)-[r:FRIENDS_WITH]->(b:Person) RETURN a.name, b.name"; Result result = session.run(matchQuery); // Process the results while (result.hasNext()) { Record record = result.next(); System.out.println(record.get("a.name").asString() + " is friends with " + record.get("b.name").asString()); } } } }
Urus niaga memastikan operasi berjaya diselesaikan atau ditarik balik jika timbul sebarang isu. Begini cara anda boleh menggunakan transaksi dengan Neo4j dan Java:
import org.neo4j.driver.*; public class Neo4jTransactionExample { public static void main(String[] args) { try (Driver driver = GraphDatabase.driver("bolt://localhost:7687",AuthTokens.basic("neo4j", "your_password")); Session session = driver.session()) { // Start a transaction session.writeTransaction(tx -> { tx.run("CREATE (a:Person {name: 'Charlie'})-[:FRIENDS_WITH]->(b:Person {name: 'Diana'})"); return null; }); // Verify the data String matchQuery = "MATCH (a:Person)-[r:FRIENDS_WITH]->(b:Person) RETURN a.name, b.name"; Result result = session.run(matchQuery); // Process the results while (result.hasNext()) { Record record = result.next(); System.out.println(record.get("a.name").asString() + " is friends with " + record.get("b.name").asString()); } } } }
Apabila anda menjalankan kod ini, ia akan:
Sambung ke pangkalan data Neo4j dan buat dua nod (Charlie dan Diana) dengan hubungan antara mereka.
Dapatkan dan cetak perhubungan antara nod ini.
Pastikan pembersihan sumber yang betul.
Memvisualisasikan data graf membantu dalam memahami perhubungan dengan lebih baik. Begini cara anda boleh menggambarkan data menggunakan pustaka GraphStream:
Pertama, tambahkan GraphStream pada pom.xml anda:
<dependency> <groupId>org.graphstream</groupId> <artifactId>graphstream-core</artifactId> <version>2.0</version> </dependency>
import org.graphstream.graph.*; import org.graphstream.graph.implementations.SingleGraph; import org.neo4j.driver.*; public class Neo4jGraphVisualization { public static void main(String[] args) { // Initialize Neo4j driver try (Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "your_password")); Session session = driver.session()) { // Fetch nodes and relationships String cypherQuery = "MATCH (a)-[r]->(b) RETURN a, r, b"; Result result = session.run(cypherQuery); // Create a graph instance Graph graph = new SingleGraph("Neo4j Graph"); // Process results and add to graph while (result.hasNext()) { Record record = result.next(); Node nodeA = record.get("a").asNode(); Node nodeB = record.get("b").asNode(); Relationship relationship = record.get("r").asRelationship(); graph.addNode(nodeA.id()).setAttribute("label", nodeA.get("name").asString()); graph.addNode(nodeB.id()).setAttribute("label", nodeB.get("name").asString()); graph.addEdge(relationship.id(), nodeA.id(), nodeB.id()).setAttribute("label", relationship.type()); } // Display the graph graph.display(); } } }
Apabila anda menjalankan kod ini, ia akan:
Kod bersambung ke pangkalan data Neo4j menggunakan protokol dan bukti kelayakan Bolt yang ditentukan.
Nod dan perhubungan daripada pangkalan data Neo4j diambil mengikut pertanyaan Cypher yang ditentukan.
Perwakilan graf dibuat menggunakan GraphStream, dengan nod dan perhubungan ditambah berdasarkan data yang diambil.
Tetingkap visual dibuka memaparkan graf, membolehkan anda melihat struktur nod dan perhubungannya.
Mengintegrasikan Neo4j dengan Java menawarkan platform yang berkuasa untuk mengurus dan menganalisis data graf. Dengan mencipta nod dan perhubungan, menggunakan transaksi untuk integriti data dan menggambarkan data, anda boleh memanfaatkan keupayaan Neo4j untuk membina aplikasi yang canggih. Mula meneroka pangkalan data graf untuk membuka kunci cerapan baharu dan mempertingkatkan penyelesaian terdorong data anda.
Atas ialah kandungan terperinci Menguasai Neowith Java: Persediaan, Pertanyaan, Transaksi dan Visualisasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!