CMP マッピングの定義に WebSphere 拡張を使用する

weblogic-cmp-rdbms-jar.xml ファイルには、コンテナー管理パーシスタンス (CMP) および コンテナー管理関係 (CMR) によって使用される、EJB 属性からデータベース列へのマッピングが含まれます。

規則は、weblogic-cmp-rdbms-jar.xml ファイルにある CMP フィールド・マッピングを検出します。 自動修正が提供されると、 WebSphere(R )で必要なマッピングの生成が試みられます。アプリケーション・サーバで が必要とするマッピングを生成しようとします。 マッピングには、データベースのタイプおよびスキーマが非常に重要となります。 したがって、自動修正では、データベースの正しいスキーマを選択するための最善の努力を行う。

解決方法

データベース・ベンダーは、規則のプロパティー・パネルで構成できます。 「自動検出 (Auto detect)」に設定した場合、 weblogic-cmp-rdbms-jar.xml ファイルの「database-type」設定が使用されるデータベースのタイプを決定します。 何も指定しない場合は、Oracle が使用されます。 DB2(R)、Oracle、SQLServer、および SQLServer2000 のみがサポートされるデータベース・タイプです。 MySQL、POINTBASE、Informix(R)、およぴ Sybase はマイグレーションできません。

次の表は、使用されるデータベース列タイプに対する Java タイプを示しています。 データベース表のスキーマがこのフォーマットから離脱している場合、CMP は機能しないことがあります。 そのような場合、Rational Application Developer の EJB から RDB へのマッピング・ウィザードで Meet-In-The-Middle 設定を使用して、 CMP マッピングをマイグレーションします。

Java タイプDB2OracleSQLServer
java.lang.Integer/intINTEGERINTEGERINTEGER
java.lang.Double/doubleDOUBLE PRECISIONDOUBLE PRECISIONDOUBLE PRECISION
java.lang.Float/floatFLOATFLOATFLOAT
java.lang.Short/shortINTEGERINTEGERSMALLINT
java.lang.Long/longBIGINTINTEGERDECIMAL
java.math.BigDecimalDECIMALDECIMALDECIMAL
java.lang.StringVARCHARVARCHARVARCHAR
java.lang.Character/charCHARCHARCHAR
java.lang.Byte/byteINTEGERINTEGERTINYINT
java.lang.Boolean/booleanINTEGERINTEGERINTEGER
java.sql.DateDATEDATEDATETIME
java.sql.TimeTIMEDATEDATETIME
java.sql.TimestampTIMESTAMPDATEDATETIME
byte[]/java.io.SerializableVARCHAR FOR BIT DATARAWIMAGE

オプティミスティック・ロック

マイグレーション時に、可能な場合は、オプティミスティック・ロックの設定がマイグレーションされます。 weblogic-cmp-rdbms-jar.xml ファイルで <verify-columns> が Timestamp または Version に設定されている場合、 オプティミスティック・ロックが <optimistic-column> の下で指定された列に対して使用可能になります。 これは、その列が CMP フィールドにマップされている場合にのみ可能になります。 このフィールドは WebLogic ではオプションとなっています。 列がマップされていない場合は、新しいフィールドを手動でエンタープライズ Bean に追加して、 weblogic-cmp-rdbms-jar.xml ファイル内の列にマップすることが必要です。

<verify-columns> 値の Read や Modified は、マイグレーション用にサポートされていません。