3

mysqlのバックグラウンドから来て、接続URLのすべてのSQLクエリに使用するデフォルトのスキーマ名を設定できます。これで、アクセスする必要のあるOr​​acleDBができました。ユーザーが使用されているスキーマ名であるため、URLで使用するスキーマを指定できないことを認識しています。

SQLコードの行を使用できることに気付きました。

ALTER SESSION SET CURRENT_SCHEMA=default_schema

プロジェクトではSQLフレームワークとしてmybatis2.3.5を使用していますが、mybatisはまったく初めてです。これを達成するためにmybatisを設定する簡単な方法はありますか?私のアプリケーションはSpring3アプリケーションであるため、SpringDataSourceTransactionManagerを使用してトランザクションを管理しています。新しい接続を作成するたびにコマンドが送信されるようにするには、マネージャーにこの要件を認識させる必要があると思います。

オンラインで検索してみましたが、ほとんどの例では、SqlMapsのSQLクエリにスキーマ名が含まれているため、これは悪い習慣です。

理想的な世界では、スキーマ名はURLの一部であるため、コードに触れることなく(つまり、JNDIでのみ構成されている)、さまざまな環境(dev、test、prodなど)のスキーマ名を変更できます。 /アプリケーションサーバーレベル)。Spring構成値を使用してこれを設定でき、JNDIルックアップまたはシステム環境プロパティを使用して値を取得できれば幸いです。

誰かが私を正しい方向に向けることができますか?

ありがとう、

エリック

4

1 に答える 1

5

私の知る限り、特定のユーザースキーマに接続するためにURLを変更するオプションはOracleにはありません。

1)mybatis:操作を開始する前に、現在のスキーマを適切なスキーマに設定できます。プロパティファイルに仕様を記述し、そのファイルからメソッドの引数を設定できます。その場合、スキーマを変更するためにコードを変更する必要はありません。

<update id="mySetSchemaMethod" parameterClass="String">
ALTER SESSION SET CURRENT_SCHEMA = ${schemaName}
</update>

2)トリガー:この接続をこの特定のJavaアプリケーションにのみ使用している場合は、クライアントイベントトリガーを設定できるため、CURRENT_SCHEMAを設定します。今回は、テスト/製品の変更を管理するためにトリガーを変更する必要があります。

CREATE OR REPLACE TRIGGER Set_Schema_On_Logon
  AFTER LOGON  
  ON MY_SCHEMA  
BEGIN  
  ALTER SESSION SET CURRENT_SCHEMA = MY_TEST_SCHEMA;  
END;  
于 2013-11-15T07:12:19.067 に答える