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が便利です。これらはJava8から対応されま...
以上、「Java – Oracle DBのデータ型マッピングを確認する」でした。