Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 基本・開発編(EJBコンテナ)


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

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

〈この項の構成〉

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

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

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

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

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カラムの型となります。

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

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です。