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 StringBigDecimal
INTEGER INTEGER StringBigDecimalLongFloatDouble
FLOAT FLOAT StringBigDecimalDouble
LONG LONG StringBigDecimalDouble
DOUBLE DOUBLE StringBigDecimal
LOCAL_DATE java.sql.Date Stringjava.time.LocalDatejava.sql.Timestamp
TIME java.sql.Time Stringjava.time.LocalTime
TIME_WITH_TIMEZONE java.time.OffsetTime String
TIMESTAMP java.sql.Timestamp Stringjava.time.LocalDateTimeoracle.sql.TIMESTAMP
TIMESTAMP_WITH_TIMEZONE java.time.OffsetDateTime Stringoracle.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.Datejava.time.LocalDate LOCAL_DATE
java.sql.Timejava.time.LocalTime TIME
java.time.OffsetTime TIME_WITH_TIMEZONE
java.sql.Timestampjava.time.LocalDateTime oracle.sql.TIMESTAMP TIMESTAMP
java.time.OffsetDateTimeoracle.sql.TIMESTAMPZ TIMESTAMP_WITH_TIMEZONE