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

[目次][用語][索引][前へ][次へ]

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データ型
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です。