2.4.2 CMPフィールドとデータベースのマッピング

ここでは,CMPフィールドとデータベースのマッピングについて説明します。マッピングは,データベースの種類ごとに異なります。

<この項の構成>
(1) HiRDBの場合のマッピング
(2) Oracleの場合のマッピング一覧

(1) HiRDBの場合のマッピング

HiRDBの場合のCMPフィールドとデータベースのマッピングについて,次の表に示します。

なお,表中の「Javaデータ型」はCMPがサポートするJavaのデータ型,「JDBCデータ型」はJavaのデータ型に対応するJDBCのjava.sql.Types.のデータ型,「SQLデータ型」はJavaデータ型とのマッピングで推奨するDBカラムの型となります。

表2-11 CMPでのフィールドとデータベースのマッピング(HiRDB使用時)

Javaデータ型JDBCデータ型SQLデータ型
booleanSMALLINTSMALLINT
java.lang.Boolean
byteSMALLINTSMALLINT
java.lang.Byte
char※1CHARCHAR(4)
java.lang.Character※1
shortSMALLINTSMALLINT
java.lang.Short
intINTEGERINTEGER
java.lang.Integer
longDECIMALDECIMAL(22)
java.lang.Long
floatREALREAL,SMALLFLT
java.lang.Float
doubleFLOATDOUBLE PRECISION
java.lang.Double
byte[]※2LONGVARBINARYBLOB
java.lang.String※1VARCHARVARCHAR(m)
CHAR(n)
MVARCHAR(m)
MCHAR(n)
NVARCHAR(x)
NCHAR(y)※3
java.math.BigDecimalDECIMALDECIMAL(m,n)※4
java.sql.DateDATEDATE※5
java.sql.TimeTIMETIME
java.sql.TimeStamp※6CHARCHAR(29)
Serializableな型※2LONGVARBINARYBLOB
注※1
固定長文字列のSQL型を使用する場合の注意については,「2.4.3 CMPを使用する場合の注意事項」を参照してください。
注※2
[HiRDB BLOB最大値] 2147483647バイト
ただし,扱えるデータサイズの上限はJDBCドライバの上限に依存します。
HiRDB Type4 JDBC Driverを使用する場合は,JDBCドライバによる制限はありません。
注※3
m,n,x,yの範囲はそれぞれ次のとおりです。
m:1~32000,n:1~30000,x:1~16000,y:1~15000
注※4
m,nの範囲はそれぞれ次のとおりです。
m:1~29,n:1~29
注※5
DATEの範囲は,0001/01/01~9999/12/31です。
注※6
「yyyy-mm-dd hh:mm:ss.fffffffff」(JDBC日付エスケープ)形式の文字列として格納します。

(2) Oracleの場合のマッピング一覧

Oracleの場合のCMPフィールドとデータベースのマッピングについて,次の表に示します。

なお,表中の「Javaデータ型」はCMPがサポートするJavaのデータ型,「JDBCデータ型」はJavaのデータ型に対応するJDBCのjava.sql.Types.のデータ型,「SQLデータ型」はJavaデータ型とのマッピングで推奨するDBカラムの型となります。

表2-12 CMPでのフィールドとデータベースのマッピング(Oracle使用時)

Javaデータ型JDBCデータ型SQLデータ型
booleanNUMERICNUMBER(38)
java.lang.Boolean
byteNUMERICNUMBER(38)
java.lang.Byte
char※1CHARCHAR(4)
java.lang.Character※1
shortNUMERICNUMBER(38)
java.lang.Short
intNUMERICNUMBER(38)
java.lang.Integer
longNUMERICNUMBER(22)
java.lang.Long
floatNUMERICNUMBER
java.lang.Float
double※2FLOATFLOAT(126)
java.lang.Double※2
byte[]※3LONGVARBINARYLONG RAW
java.lang.String※1VARCHARVARCHAR(m)
CHAR(n)
LONG※4
java.math.BigDecimalNUMERICNUMBER(m,n)※5
java.sql.DateDATEDATE※6,※7
java.sql.TimeCHARCHAR(8)※8
java.sql.TimeStampTimeStampDATE※7,※9
Serializableな型※3LONGVARBINARYLONG RAW
注 java.sql.Types.BLOBにマッピングされるBLOB,およびjava.spl.Types.CLOBにマッピングされるCLOBは扱えません。
注※1
固定長文字列のSQL型を使用する場合の注意については,「2.4.3 CMPを使用する場合の注意事項」を参照してください。
注※2
[Oracle FLOAT(126)の範囲] 1E-125~9.9・・・9E125
ただし,丸めが発生するおそれがあります。
注※3
[Oracle LONG RAW最大値] 2ギガバイト。
ただし,扱えるデータサイズの上限はJDBCドライバの上限に依存します。
注※4
m,nの範囲はそれぞれ次のとおりです。
m=1~4000,n=1~2000
また,""(長さゼロの空文字)をOracleに格納するとNULLに変換されます。
注※5
m,nの範囲はそれぞれ次のとおりです。
m=1~38,n=-84~127
注※6
DATEの範囲は,-4712/01/01~9999/12/31です。
注※7
紀元前データはJava-JDBCドライバ間でマイナス値が正しく扱えないため,値は保証されません。
注※8
「hh:mm:ss」(JDBC日付エスケープ)形式の文字列として格納します。
注※9
DATEの範囲は,-4712/01/01 00:00:00~9999/12/31 23:59:59です。