Java – Oracle DBのデータ型マッピングを確認する

Spring Data JPAを使用していて「Javaの型」が「Oracleデータベース」ではどの型にマッピングされるのか気になったので調査してみました。Javaの型については以前の記事「Javaの型についてまとめてみる」をご参照ください。

Java プリミティブ型

Oracleの公式サイトにマッピング情報がありました(11.1 データ型マッピング – Oracle JDBC開発者ガイド)。まずはプリミティブ型を抜粋します。

標準Java型 SQLデータ型
byte NUMBER
short NUMBER
int NUMBER
long NUMBER
float NUMBER
double NUMBER
boolean NUMBER

プリミティブ型はOracleデータベースにマッピングすると全部NUMBER型になるんですね。

Java 参照型

続いて参照型のマッピングです。よく使うもののみ抜粋します。

標準Java型 SQLデータ型
java.lang.String CHAR
java.lang.String VARCHAR2
java.lang.String LONG
java.math.BigDecimal NUMBER
byte[] RAW
byte[] LONGRAW
java.sql.Blob BLOB
java.sql.Clob CLOB
java.sql.NClob NCLOB
java.sql.Date DATE
java.sql.Time DATE
javal.sql.Timestamp TIMESTAMP

JavaのString型は複数のSQLデータ型にマッピングしています。これはどのように判定されてマッピングされるのか気になるところです。

また、JavaのData型、Time型はSQLデータ型のDATE型にマッピングされます。この点についても詳細に把握したく、まずはJavaの日時関連処理について調査しました。

JavaのLocalDateTimeで日時関連処理を簡単にする方法
Javaで日時関連の処理を対応するにはjava.timeのライブラリでLocalDateTime、LocalDate、LocalTimeが便...

以上、「Java – Oracle DBのデータ型マッピングを確認する」でした。