5

DB2 データベースを指す Spring データソースを宣言しようとしています。現在、org.springframework.jdbc.datasource.DriverManagerDataSource を使用して接続をセットアップしていますが、データソース Bean でデータベースのデータベース スキーマを指定する方法が見つかりません。誰かがこれについて私を助けることができますか?

4

3 に答える 3

15

問題は、スキーマを設定する標準的な方法がないことです。各データベースには異なるメカニズムがあります。

回避策は、データベースの URL の一部としてスキーマを設定することです...

db2 の場合、URL は次のようになります。

jdbc:db2://SERVER_NAME:PORT/DATABASE:currentSchema=SCHEMA_NAME;

それが役立つことを願っています...

特記事項: 必ずセミコロンを追加してください。そうしないと、URL が無効であるというエラーが表示されます。また、最後の後に何もしないでください。存在します (スペースでさえありません)。

于 2009-08-08T12:50:49.423 に答える
2

標準の Spring 名前空間でこれを行う手段はありません。構成にスキーマを追加する要求に対する Rob Harrop の応答:

一般に、この種の機能は接続プールにプッシュする必要があります。これは、デコレーターを介してこれを行うエレガントでパフォーマンスの高い方法がないためです。プールは、作成する接続ごとに 1 回スキーマを設定できますが、ここでは、接続が取得されるたびに設定する必要があります。

どうしてもプロキシを構成に設定したい場合は、サブミッターが、スキーマを指定できるようにするためのプロキシ用のコードをいくつか含めました。

于 2009-08-08T10:01:28.753 に答える
0

接続でスキーマの所有者をユーザーとして使用する場合、その接続はその特定のスキーマを指します。すなわち。ユーザーuser1がschema1という名前のデータベーススキーマの所有者である場合、ユーザーuser1を使用してデータベースに接続すると、デフォルトで接続はschema1を指します。

Springが提供するUserCredentialsDataSourceAdapterを使用して、ログインしているユーザーに基づいてさまざまなスキーマに接続しました。これにより、ユーザーに基づいて特定のスキーマを指すデータソースが提供されます。これは、スレッドベースのログイン情報を使用します。各スレッドは、接続するスキーマを決定し、それに応じてユーザーに提供する必要があります。

于 2009-08-11T14:03:23.773 に答える