18.6 PGX JDBCドライバを使用したPGQL問合せの実行
Graph Server and Clientリリース24.1.0以降では、PGX JDBCドライバを使用してPGXセッションにアクセスし、グラフ・サーバー(PGX)にロードされるグラフを問い合せることができます。
PGX JDBCドライバを使用するには、次の点に注意してください:
- PGX JDBCドライバをDriverManagerに登録します:
import java.sql.DriverManager; import oracle.pgx.jdbc.PgxJdbcDriver; ... DriverManager.registerDriver(new PgxJdbcDriver());
- 次に示すように、接続オブジェクトを取得するときに、JDBC URLに
jdbc:oracle:pgx:
接頭辞を追加します:Connection conn = DriverManager.getConnection("jdbc:oracle:pgx:@<graph_server_host>:<server_port>", "<username>", "<password>");
例18-5 PGX JDBCドライバの使用
次の例では、PGX JDBCドライバを使用して接続を確立し、基礎となるPGXセッションにアクセスしてグラフをグラフ・サーバー(PGX)にロードし、文を作成し、グラフに対してPGQL問合せを実行します。
import java.sql.*;
import oracle.pgx.jdbc.*;
import oracle.pgx.api.*;
public class PgxJdbcSample {
public static void main(String[] args) throws Exception {
String jdbcUrl = "jdbc:oracle:pgx:https://localhost:7007";
String username = "graphuser";
String password = "graph";
DriverManager.registerDriver(new PgxJdbcDriver());
try(Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
if (conn.isWrapperFor(PgxSession.class)) {
PgxSession session = conn.unwrap(PgxSession.class);
session.readGraphByName("BANK_GRAPH_VIEW", GraphSource.PG_PGQL);
}
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT e.AMOUNT AS AMOUNT FROM MATCH (a IS ACCOUNTS) -[e IS TRANSFERS]-> (b IS ACCOUNTS) ON BANK_GRAPH_VIEW "+
" WHERE a.ID = 179 AND b.ID = 688");
while(rs.next()){
System.out.println("AMOUNT = " + rs.getLong("AMOUNT"));
}
}
}
}
前述のコードの結果の出力は次のようになります:
AMOUNT = 1000
前述のコードを実行する場合は、ランタイム・クラスパスでPGXクライアントJARを指定する必要があります。
- PGX JDBCドライバの制限
PGX JDBCドライバの制限を確認します。 - PGXデータ型の互換性およびキャスト
PGX JDBCドライバの互換性モードを構成して、ResultSet#getObject()
メソッドのコール時に返されるデータ型を決定できます。
親トピック: グラフ・サーバー(PGX)に対するPGQL問合せの実行