18.6.2 PGXデータ型の互換性およびキャスト

PGX JDBCドライバの互換性モードを構成して、ResultSet#getObject()メソッドのコール時に返されるデータ型を決定できます。

PGX JDBCドライバでは、次の互換性モードがサポートされています:

  • PGX (デフォルト): デフォルトでは、PGX JDBCドライバはPGX互換モードを使用してPGXネイティブ型を返します。
  • ORACLE_JDBC19: このモードでは、ドライバはOracle Database 19cと互換性のあるデータ型を返すことができます。
  • ORACLE_JDBC23: このモードでは、ドライバでOracle Database 23aiと互換性のあるデータ型を返すことができます。

次の表では、様々な互換性モードのためにドライバから返されるデータ型について説明します。

表18-4 データ型の互換性

PGX型 PGX (デフォルト) ORACLE_JDBC19 ORACLE_JDBC23
BOOLEAN BOOLEAN java.math.BigDecimal Boolean
INTEGER/LONG/FLOAT/DOUBLE INTEGER/LONG/FLOAT/DOUBLE java.math.BigDecimal java.math.BigDecimal
LOCAL_DATE java.sql.Date java.sql.Timestamp java.sql.Timestamp
TIME java.sql.Time サポート対象外 サポート対象外
TIME_WITH_TIMEZONE java.time.OffsetTime サポート対象外 サポート対象外
TIMESTAMP java.sql.Timestamp oracle.sql.TIMESTAMP oracle.sql.TIMESTAMP
TIMESTAMP_WITH_TIMEZONE java.time.OffsetDateTime oracle.sql.TIMESTAMPZ oracle.sql.TIMESTAMPZ

PGX JDBCドライバでの互換性モードの設定

別の互換性モード(デフォルトのPGXモード以外)を使用する場合は、次のようにプロパティの一部として設定できます:

import static oracle.pgx.jdbc.CONNECTION_PROPERTY_COMPATIBILITY_MODE;
import static oracle.pgx.jdbc.ORACLE_JDBC19;
...
Properties properties = new Properties();
properties.put(...);
properties.put(CONNECTION_PROPERTY_COMPATIBILITY_MODE, ORACLE_JDBC19); // set compatibility mode
Connection connection = DriverManager.getConnection("<jdbc_url>", properties);

キャストによるデータ型変換

PGX JDBCドライバでは、次の表に示すように、(互換性モードに関係なく)ある型を別の型にキャストできます。

表18-5 キャストでサポートされている追加の型

PGX型 デフォルト・マッピング(PGX互換性) (キャストで)サポートされている追加の型
BOOLEAN BOOLEAN String、BigDecimal
INTEGER INTEGER String、BigDecimal、Long、Float、Double
FLOAT FLOAT String、BigDecimal、Double
LONG LONG String、BigDecimal、Double
DOUBLE DOUBLE String、BigDecimal
LOCAL_DATE java.sql.Date String、java.time.LocalDate、java.sql.Timestamp
TIME java.sql.Time String、java.time.LocalTime
TIME_WITH_TIMEZONE java.time.OffsetTime String
TIMESTAMP java.sql.Timestamp String、java.time.LocalDateTime、oracle.sql.TIMESTAMP
TIMESTAMP_WITH_TIMEZONE java.time.OffsetDateTime String、oracle.sql.TIMESTAMPZ

PreparedObject#setObject(int index, Object o)のデータ型変換

次の表では、PreparedObject#setObject(int index, Object o)メソッドをコールするときのデータ型変換について説明します。

表18-6 setObjectメソッドのデータ型変換

指定されたオブジェクト型 PGX型
BOOLEAN BOOLEAN
INTEGER/FLOAT/LONG/DOUBLE INTEGER/FLOAT/LONG/DOUBLE
BIGDECIMAL DOUBLE
java.sql.Date、java.time.LocalDate LOCAL_DATE
java.sql.Time、java.time.LocalTime TIME
java.time.OffsetTime TIME_WITH_TIMEZONE
java.sql.Timestamp、java.time.LocalDateTime、 oracle.sql.TIMESTAMP TIMESTAMP
java.time.OffsetDateTime、oracle.sql.TIMESTAMPZ TIMESTAMP_WITH_TIMEZONE