JPA機能を使用する場合、以下に注意してください。
EJB 2.0以降のCMP Entity Bean間のrelationshipの一貫性は、EJBコンテナで自動的に管理されますが、Java Persistence Entity間のrelationshipの一貫性は、自動的に管理されません。例えば、双方向のrelationshipでは、一方でrelationshipフィールドを更新すると、もう一方のEntityのrelationshipフィールドもアプリケーションが更新する必要があります。
Entityは、Java EEコンポーネントではないので、Entity内でDependency Injectionは使用できません。
Interstage永続性プロバイダが内部的に自動生成したSQL文を実行する場合、識別子には大文字/小文字を区別するダブルコーテーションなどは付与されません。例えば、カラム名に"id"や"name"を指定した場合、以下のようなSQL文が実行されます。
select id, name from employee
この場合、識別子が大文字/小文字のどちらで扱われるかについては、データベースの仕様により異なります。
このため、以下のように設定することをお勧めします。
Oracle、JavaDB、Symfoware、Sql Serverの場合、マッピング対象のテーブル名とカラム名を大文字に統一することを推奨します。(またはデフォルト設定を利用)
PowerGres Plusの場合、マッピング対象のテーブル名とカラム名を小文字に統一することを推奨します。
なお、Interstage永続性プロバイダを使用する場合、以下にも注意してください。
サポートされるデータベースは、「システム設計ガイド」の「ソフトウェア条件」-「アプリケーション実行時に必要なソフトウェア」-「データベース関連(Java EE)」を参照してください。
Entityの永続化フィールドについては、Java Persistence API規約による使用可能なJava型以外は動作が保証できません。
Entity間の継続関係のマッピング方針については、SINGLE_TABLEオプションまたはJOINEDオプションは使用できますが、TABLE_PER_CLASSオプションは使用できません。
DBMSの制限により使用できない機能があります。使用できない機能を使おうとすると、DBMSの仕様による例外メッセージと発行されたSQL文が出力されます。DBMSのマニュアルを参照し、必要に応じてアプリケーションを修正してください。以下に、DBMSの制限により使用できない機能をいくつか記述します。
使用するDBMSがSymfowareの場合、以下に注意してください。
以下の関数は、Symfowareのバージョンによって使用に制限があります。詳細はSymfowareのマニュアルを参照してください。
SQRT関数、MOD関数の使用
LOCATE関数の第3引数の指定、入力パラメタの複数指定
TRIM関数、LENGH関数の入力パラメタの指定
SUBSTRING関数の第1引数の入力パラメタの指定
CONCAT関数の入力パラメタの複数指定
Pessimistic Locking機能のLockNoWaitオプションは使用できません。
リレーションシップのあるEntityも、データベーステーブル自動生成機能を利用できますが、生成されたデータベーステーブルには外部キーは含まれません(FOREIGN KEY制約による制御は行われません)。
プライマリキー値の自動生成機能でTableGeneratorを使用する時、table属性を指定しない場合、デフォルトで「SEQUENCE」を利用します。しかし、table属性に「SEQUENCE」を明示的に指定した場合、「SEQUENCE」がSymfowareの予約語のため、プライマリキー自動生成のためのテーブル生成に失敗します。table属性にSymfowareの予約語を指定する場合、ダブルコーテーションで囲って指定してください。
使用するDBMSがSQL Serverの場合、以下に注意してください。
TRIM関数の変換文字は指定できません。空白が使用されます。
Pessimistic Locking機能は使用できません。
使用するDBMSがPowerGres Plusの場合、以下に注意してください。
JDBC接続プールのデータソースクラス名にorg.postgresql.jdbc3.Jdbc3ConnectionPoolを設定してテーブル自動生成機能を利用する場合、JDBC接続プールのプロパティにdefaultAutoCommit=trueを設定してください。