AdbGraphClient APIでのPGX JDBCドライバの使用
グラフ・サーバーおよびクライアント・リリース24.1.0以降では、PGX JDBCドライバをAdbGraphClient
APIとともに使用して、グラフ・サーバーのメモリーに格納されているグラフをAutonomous DatabaseのGraph Studioで問い合せることができます。
PGX JDBCドライバを使用してAutonomous Databaseインスタンスに接続するには、次の点に注意してください:
- PGX JDBCドライバをDriverManagerに登録します:
import java.sql.DriverManager; import oracle.pgx.jdbc.PgxJdbcDriver; ... DriverManager.registerDriver(new PgxJdbcDriver());
- PGX JDBCドライバを使用して接続を確立するには、次の2つの方法のいずれかを使用します:
- プロパティを使用します
properties = new Properties(); properties.put("tenancy_ocid", "<tenancy_OCID>"); properties.put("database_ocid", "<database_OCID>"); properties.put("database", "<database_name>"); properties.put("username", "<username>"); properties.put("password", "<password>"); Connection connection = DriverManager.getConnection("jdbc:oracle:pgx:https://<hostname-prefix>.adb.<region>.oraclecloudapps.com", properties);
- Walletの使用
Connection connection = DriverManager.getConnection("jdbc:oracle:pgx:@<db_TNS_name>?TNS_ADMIN=<path_to_wallet>", "<ADB_username>", "<ADB_password>")
前述のコード・サンプルのJDBC URLでは、プレフィクスとして
jdbc:oracle:pgx:
を使用します。 - プロパティを使用します
例5-1 PGX JDBCドライバを使用したAutonomous Databaseでのグラフ問合せの実行
次の例では、PGX JDBCドライバを使用してAutonomous Databaseインスタンスに接続し、Graph Studioでコンピュート環境を起動し、グラフをグラフ・サーバー(PGX)にロードし、文を作成し、グラフに対してPGQL問合せを実行します。
import java.sql.*;
import oracle.pgx.jdbc.*;
import oracle.pg.rdbms.*;
import oracle.pgx.api.*;
public class AdbPgxJdbc {
public static void main(String[] args) throws Exception {
DriverManager.registerDriver(new PgxJdbcDriver());
try (Connection conn = DriverManager.getConnection("jdbc:oracle:pgx:@<db_TNS_name>?TNS_ADMIN=<path_to_wallet>","ADB_username","<ADB_password>")) {
AdbGraphClient client = conn.unwrap(AdbGraphClient.class);
if (!client.isAttached()) {
var job = client.startEnvironment(10);
job.get();
System.out.println("job details: name=" + job.getName() + "type= " + job.getType() +"created_by= " + job.getCreatedBy());
}
PgxSession session = conn.unwrap(PgxSession.class);
PgxGraph graph = session.readGraphByName("BANK_PGQL_GRAPH", GraphSource.PG_PGQL);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * "+
"FROM GRAPH_TABLE ( BANK_PGQL_GRAPH "+
"MATCH (a IS ACCOUNTS) -[e IS TRANSFERS]-> (b IS ACCOUNTS) "+
"WHERE a.ID = 179 AND b.ID = 688 "+
"COLUMNS (e.AMOUNT AS AMOUNT ))");
while(rs.next()){
System.out.println("AMOUNT = " + rs.getLong("AMOUNT"));
}
}
}
}
前述のコードの結果の出力は次のようになります:
AMOUNT = 7562