Cosminexus 機能解説

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

5.2.9 CMPフィールドとデータ型のマッピング

Cosminexusで提供するEJBコンテナのCMP機能でのEntity BeanのJavaデータ型とデータベースのSQLデータ型の対応について説明します。

<この項の構成>
(1) CMPでサポートするJavaデータ型の範囲
(2) 注意事項
(3) HiRDBの場合のマッピング一覧
(4) Oracleの場合のマッピング一覧

(1) CMPでサポートするJavaデータ型の範囲

EJBコンテナのEntity BeanのCMPでサポートするJavaデータ型の範囲と,プライマリキーへの指定の可否を次の表に示します。

表5-14 CMPでサポートするJavaデータ型の範囲

Javaデータ型 値の範囲 プライマリキーへの指定
boolean true,false ×
java.lang.Boolean
byte -128〜127 ×
java.lang.Byte
char '\u0000'〜'\uffff'(0〜65535) ×
java.lang.Character
short -32768〜32767 ×
java.lang.Short
int -2147483648〜2147483647 ×
java.lang.Integer
long -9223372036854775808〜9223372036854775807 ×
java.lang.Long
float ±1.40239846e-45〜±3.40282347e+38 ×
java.lang.Float
double ±4.94065645841246544e-324〜±1.79769313486231570e+308 ×
java.lang.Double
byte[] 1Byte〜2147483647Byte ×
java.lang.String
java.math.BigDecimal ×
java.sql.Date ×
java.sql.Time 00:00:00〜23:59:59 ×
java.sql.TimeStamp ×
Serializableな型 ×

(凡例)
○:プライマリキーに指定できる。
×:プライマリキーに指定できない。
−:該当しない。

注※ 浮動小数点を扱う場合,丸めが発生する可能性があります。

(2) 注意事項

(3) HiRDBの場合のマッピング一覧

EJBコンテナのEntity BeanのCMPでのフィールドとデータベースのマッピングを次の表に示します。

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

表5-15 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) 注意事項」を参照してください。

注※2 [HiRDB BLOB最大値] 2147483647バイト

注※3 m,n,x,yの範囲はそれぞれ次のとおりです。
m:1〜30000,n:1〜32000,x:1〜15000,y:1〜16000

注※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日付エスケープ)形式の文字列として格納します。

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

EJBコンテナのEntity BeanのCMPでのフィールドとデータベースのマッピングを次の表に示します。

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

表5-16 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) 注意事項」を参照してください。

注※2 [Oracle FLOAT(126)の範囲] 1E-125〜9.9・・・9E125
ただし,「丸め」が発生するおそれがあります。

注※3 [Oracle LONG RAW最大値] 2ギガバイト。

注※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です。なお,Oracle8iでは小数点以下の秒数は扱えません。