Oracle ADF Business ComponentsをOracle 9i LiteおよびOracle以外のデータベースで使用する場合、プラットフォーム固有の考慮点と制限があります。
このトピックには、次の情報が含まれています。
jbo.test.passivateStateTo=file
jbo.pers.max.active.nodes=-1
個々の行のロック方法、および行がロックされている場合の応答方法のコントロールに、様々なSQLベンダーが異なる構文を使用します。この設定は、行のロック試行、および行がロック済の場合の即時エラーを目的としています。
Oracle構文は次のとおりです。SELECT DNAME from DEPT WHERE DEPTNO=20 FOR UPDATE NOWAIT
SQL*Server構文は次のとおりです。SELECT DNAME from DEPT WITH (HOLDLOCK) WHERE DEPTNO=20
次のいずれかの方法でロック動作をコントロールできます。
jbo.sql92.locktrailer
はFOR UPDATE
にデフォルト設定されます。このプロパティは、SQL ServerのWITH (HOLDLOCK)
で必要な場合など、データベースで別の構文が必要とされる場合にオーバーライドします。
getSqlVariantLockTrailer()
をオーバーライドし、FOR UPDATE NOWAIT
を(Oracle構文を使用して)戻すことができます。
Locktrailer句の位置は、メソッドのオーバーライドでのみ変更できます。メソッドはブール・フラグgetLockTrailerIsAtEnd()
であり、デフォルトでtrue
に設定されます。
SQLServerでは、これがfalse
にオーバーライドされ、Locktrailer句がSELECT句の終わりに挿入されます。挿入されない場合、Locktrailerが文の終わりに発生します。
select ENAME from EMP WITH (HOLDLOCK) where EMID=?
"(SQL Server)select ENAME from EMP where EMPID=? FOR UPDATE
(SQL92、mySQLなど)
Oracle ADF Business ComponentsをDB2と組み合せて使用する場合、次の制限事項があります。
DB2では、外部結合を指定する構文が異なります。DB2では、(+)はサポートされていません。このため、OracleでのSQL文
SELECT E.EMPNO, E.ENAME, E.JOB, E.DEPTNO AS EMP_DEPT_NUM, D.DEPTNO, D.DNAME, D.LOC FROM EMP E, DEPT D WHERE E.DEPTNO = D.DEPTNO (+) ORDER BY 1"
のかわりに、DB2で次の文を使用する必要があります。
SELECT E.EMPNO, E.ENAME, E.JOB, E.DEPTNO AS EMP_DEPT_NUM, D.DEPTNO, D.DNAME, D.LOC FROM EMP E LEFT OUTER JOIN DEPT D ON E.DEPTNO = D.DEPTNO"
順序の処理は、ユーザーが管理する必要があります。
DB2で順序を作成するには、次のようにします。
create sequence <seq-name> start with <val>
DB2で順序を削除するには、次のようにします。
drop sequence <seq-name> restrict
順序の次の値を取得するには、次のようにします。
values nextval for <seq-name>
注意: これは、Oracleでの次の文に相当します。
select <seq-name>.nextval from dual
順序の現在(前)の値を取得するには、次のようにします。
values prevval for <seq-name>
注意: Oracleでの対応する文は、次のとおりです。
select <seq-name>.currval from dual
SQL Server 2000には、Northwindおよびpubsというサンプルのデータベースが含まれています。これらの組込みデータベースをJDeveloperで使用する場合に起こる、既知の問題がいくつかあります。
まず、表の所有権をdboから自分のSQLログイン・アカウントに変更できます。たとえば、pubsデータベースのログインをpubs_userにできます。pubsデータベースには、AUTHORSという名前のデータベース表があります。
AUTHORS表を使用するには、次のようにします。
設計時の実行では、データベースで定義された主キーを持つ表(たとえば、AUTHORSなど)の場合、主キーの属性がJDeveloperで認識される必要があります(JDeveloper 9.0.2では、この属性をIDEに手動で設定する必要があります)。定義された主キーを持たない表(DISCOUNTなど)の場合、または自動的に主キーが認識されない場合には、プロジェクトをコンパイルするには、JDeveloperで主キーを手動で入力する必要があります。
Business Component Browserで参照するには、構成にドライバ・クラスを追加し、Business Component Browserでこのローカル構成を選択します。ただし、更新時に必ずエラーが起こります。これは、既知の問題です。手順については、「SQL Serverデータベース用Oracle ADF Business Componentsの開発」を参照してください。
Microsoft SQL Server 2000 Driver for JDBCなどのType 4 JDBCドライバの場合、必要なJARファイルをBC4J/lib
へコピーすることで、JSPをローカル・モードでデプロイできます。外部OC4Jと異なり、動的には認識されないため、BC4J/lib
へのコピーの後、埋込みサーバーを停止し、再起動する必要があります。外部OC4Jの場合、application.xml設定を使用することをお薦めします。
application.xml
ファイルを編集する必要があります。
Copyright © 1997, 2007, Oracle. All rights reserved.