Neo4j は、高度に接続されたデータの管理に優れた強力なグラフ データベースです。 Java と組み合わせると、複雑な関係モデリングを必要とするアプリケーションを構築するための堅牢なソリューションが提供されます。この投稿では、Java で Neo4j を使用するための基本を説明し、セットアップ、クエリ、ベスト プラクティスをカバーします。
まず、Neo4j Java ドライバーをプロジェクトに追加する必要があります。 Maven を使用している場合は、pom.xml に次の依存関係を追加します:
org.neo4j.driver neo4j-java-driver 5.2.0
依存関係を追加したら、Neo4j データベースへの接続を確立できます:
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()); } } } }
トランザクションにより、操作が正常に完了するか、問題が発生した場合はロールバックされることが保証されます。 Neo4j と 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()); } } } }
このコードを実行すると、次のようになります:
Neo4j データベースに接続し、それらの間に関係を持つ 2 つのノード (Charlie と Diana) を作成します。
これらのノード間の関係を取得して出力します。
リソースを適切にクリーンアップします。
グラフ データを視覚化すると、関係をより深く理解できます。 GraphStream ライブラリを使用してデータを視覚化する方法は次のとおりです:
まず、GraphStream を pom.xml に追加します:
org.graphstream graphstream-core 2.0
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(); } } }
このコードを実行すると、次のようになります:
コードは、指定されたBoltプロトコルと認証情報を使用してNeo4jデータベースに接続します。
Neo4j データベースからのノードと関係は、指定された Cypher クエリに従って取得されます。
グラフ表現は GraphStream を使用して作成され、取得したデータに基づいてノードと関係が追加されます。
ビジュアル ウィンドウが開き、グラフが表示され、ノードの構造とその関係を確認できます。
Neo4j と Java を統合すると、グラフ データを管理および分析するための強力なプラットフォームが提供されます。ノードと関係を作成し、データ整合性のためにトランザクションを使用し、データを視覚化することで、Neo4j の機能を活用して洗練されたアプリケーションを構築できます。グラフ データベースの調査を開始して、新しい洞察を引き出し、データ駆動型のソリューションを強化します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3