2.4.2 CMPフィールドとデータベースのマッピング
ここでは,CMPフィールドとデータベースのマッピングについて説明します。マッピングは,データベースの種類ごとに異なります。
- 〈この項の構成〉
(1) HiRDBの場合のマッピング
HiRDBの場合のCMPフィールドとデータベースのマッピングについて,次の表に示します。
なお,表中の「Javaデータ型」はCMPがサポートするJavaのデータ型,「JDBCデータ型」はJavaのデータ型に対応するJDBCのjava.sql.Types.のデータ型,「SQLデータ型」はJavaデータ型とのマッピングで推奨するDBカラムの型となります。
Javaデータ型 |
JDBCデータ型 |
SQLデータ型 |
---|---|---|
boolean |
SMALLINT |
SMALLINT |
java.lang.Boolean |
||
byte |
SMALLINT |
SMALLINT |
java.lang.Byte |
||
char※1 |
CHAR |
CHAR(4) |
java.lang.Character※1 |
||
short |
SMALLINT |
SMALLINT |
java.lang.Short |
||
int |
INTEGER |
INTEGER |
java.lang.Integer |
||
long |
DECIMAL |
DECIMAL(22) |
java.lang.Long |
||
float |
REAL |
REAL,SMALLFLT |
java.lang.Float |
||
double |
FLOAT |
DOUBLE PRECISION |
java.lang.Double |
||
byte[]※2 |
LONGVARBINARY |
BLOB |
java.lang.String※1 |
VARCHAR |
VARCHAR(m) CHAR(n) MVARCHAR(m) MCHAR(n) NVARCHAR(x) NCHAR(y)※3 |
java.math.BigDecimal |
DECIMAL |
DECIMAL(m,n)※4 |
java.sql.Date |
DATE |
DATE※5 |
java.sql.Time |
TIME |
TIME |
java.sql.TimeStamp※6 |
CHAR |
CHAR(29) |
Serializableな型※2 |
LONGVARBINARY |
BLOB |
- 注※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カラムの型となります。
Javaデータ型 |
JDBCデータ型 |
SQLデータ型 |
---|---|---|
boolean |
NUMERIC |
NUMBER(38) |
java.lang.Boolean |
||
byte |
NUMERIC |
NUMBER(38) |
java.lang.Byte |
||
char※1 |
CHAR |
CHAR(4) |
java.lang.Character※1 |
||
short |
NUMERIC |
NUMBER(38) |
java.lang.Short |
||
int |
NUMERIC |
NUMBER(38) |
java.lang.Integer |
||
long |
NUMERIC |
NUMBER(22) |
java.lang.Long |
||
float |
NUMERIC |
NUMBER |
java.lang.Float |
||
double※2 |
FLOAT |
FLOAT(126) |
java.lang.Double※2 |
||
byte[]※3 |
LONGVARBINARY |
LONG RAW |
java.lang.String※1 |
VARCHAR |
VARCHAR(m) CHAR(n) LONG※4 |
java.math.BigDecimal |
NUMERIC |
NUMBER(m,n)※5 |
java.sql.Date |
DATE |
DATE※6,※7 |
java.sql.Time |
CHAR |
CHAR(8)※8 |
java.sql.TimeStamp |
TimeStamp |
DATE※7,※9 |
Serializableな型※3 |
LONGVARBINARY |
LONG 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です。