Maven CentralでのOracle Graph Java Clientの使用

Maven Centralからプロパティ・グラフJavaクライアントを取得できます。

グラフJavaクライアント用のMavenアーティファクトは、次のとおりです。
  • グループ名: com.oracle.database.graph
  • アーティファクト名: opg-client
  • バージョン: 23.1.0

次のステップを実行して、Maven CentralからグラフJavaクライアントを使用できます。

  1. Apache Mavenをシステムにダウンロードしてインストールします。
    詳細は、Apache Maven Projectを参照してください。
  2. mvnコマンドを使用してbinフォルダをPATH変数に追加します。
  3. Mavenプロジェクトをビルドし、プロジェクト・ディレクトリにナビゲートします。
  4. 次のように、pom.xmlファイルを編集します。
    1. 次のように、グラフJavaクライアントの依存関係を追加します。
      <dependencies>
          <dependency>
            <groupId>com.oracle.database.graph</groupId>
            <artifactId>opg-client</artifactId>
            <version>23.1.0</version>
          </dependency>
      </dependencies>

      ノート:

      Gradleをビルド・ツールとして使用している場合、Javaクライアントの同等の依存関係宣言は次のとおりです。

      implementation group: 'com.oracle.database.graph', name: 'opg-client', version: '23.1.0'

    2. JavaクライアントがSpoofax Language Workbenchライブラリに依存してPGQL問合せをコンパイルするため、次のリポジトリを追加します。
      <repositories>
          <repository>
            <id>spoofax</id>
            <url>https://artifacts.metaborg.org/content/repositories/releases</url>
          </repository>
      </repositories>
  5. 必要に応じて、ステップ4をスキップし、<project_dir>/POM.xmlファイルに次の最小POM構成をコピーできます。
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.mycompany.app</groupId>
      <artifactId>my-app</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>my-app</name>
      <repositories>
        <repository>
          <id>spoofax</id>
          <url>https://artifacts.metaborg.org/content/repositories/releases</url>
        </repository>       
      </repositories>
      <dependencies>
        <dependency>
          <groupId>com.oracle.database.graph</groupId>
          <artifactId>opg-client</artifactId>
          <version>23.1.0</version>
        </dependency>
      </dependencies>
    </project>
  6. <project_dir>/src/main/java/com/mycompany/appでJavaコードを作成し、Mavenを使用してコンパイルします。
    たとえば、次のコードは<project_dir>/src/main/java/com/mycompany/app/App1.javaファイルに格納されます。
    package com.mycompany.app;
     
    import java.sql.DriverManager;
    import java.sql.Connection;
    import java.sql.Statement;
    import oracle.pg.rdbms.pgql.PgqlConnection;
    import oracle.pg.rdbms.pgql.PgqlStatement;
    import oracle.pg.rdbms.pgql.PgqlResultSet;
    import oracle.pgx.api.*;
    import oracle.pg.rdbms.GraphServer;
    import oracle.pg.rdbms.pgql.jdbc.PgqlJdbcRdbmsDriver;
    
    public class App1 {
     
      public static void main(String[] args) throws Exception {
        String dbConnectString = args[0];
        String username = args[1];
        String password = args[2];
     
        // Obtain a JDBC database connection
        DriverManager.registerDriver(new PgqlJdbcRdbmsDriver());
        String jdbcUrl = "jdbc:oracle:pgql:@" + dbConnectString;
        System.out.println("connecting to " + jdbcUrl);
    
        try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
          conn.setAutoCommit(false);
    
          // Create PGQL connection
          PgqlConnection pgqlConn = PgqlConnection.getConnection(conn);
    
          // Create a PGQL statement to execute PGQL queries
          PgqlStatement pgqlStmt = pgqlConn.createStatement();
    
          // Create a property graph view using the CREATE PROPERTY GRAPH statement
          String pgViewName = "BANK_GRAPH_VIEW";
          String createPgViewQuery = 
              "CREATE PROPERTY GRAPH " + pgViewName + " " +
              "VERTEX TABLES ( BANK_ACCOUNTS AS ACCOUNTS " +
              "KEY (ID) " +
              "LABEL ACCOUNTS " +
              "PROPERTIES (ID, NAME)" +
              ") " +
              "EDGE TABLES ( BANK_TXNS AS TRANSFERS " +
              "KEY (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT) " +
              "SOURCE KEY (FROM_ACCT_ID) REFERENCES ACCOUNTS (ID) " +
              "DESTINATION KEY (TO_ACCT_ID) REFERENCES ACCOUNTS (ID) " +
              "LABEL TRANSFERS " +
              "PROPERTIES (FROM_ACCT_ID, TO_ACCT_ID, AMOUNT, DESCRIPTION)" +
              ") OPTIONS(PG_VIEW)";
    
          pgqlStmt.execute(createPgViewQuery);
    
          // Execute a query to retrieve the first 10 elements of the graph
          String pgqlQuery = 
              "SELECT e.from_acct_id, e.to_acct_id, e.amount FROM " +
              "MATCH (n:ACCOUNTS) -[e:TRANSFERS]-> (m:ACCOUNTS) ON " +
              pgViewName + " LIMIT 10";
    
          PgqlResultSet rs = pgqlStmt.executeQuery(pgqlQuery);
          rs.print();
    
          // Drop the property graph view using the DROP PROPERTY GRAPH statement
          String dropPgViewQuery = "DROP PROPERTY GRAPH " + pgViewName;
          pgqlStmt.execute(dropPgViewQuery);
        }
        System.exit(0);
      }
    }

    その後、プロジェクト・ディレクトリにナビゲートして次のコマンドを実行することで、前述のコードをコンパイルして実行できます。

    mvn compile exec:java -Dexec.mainClass="com.mycompany.app.App1"-Dexec.arguments='<db-connect-string>,<username>,<password>'

    正常に処理されると、コードによって次のような出力が生成されます。実際の出力は、<db-connect-string>によって異なる場合があります。

    [INFO] --- exec-maven-plugin:3.1.0:java (default-cli) @ my-app ---
    connecting to jdbc:oracle:pgql:@myhost:1521/oradb
    name = Baz