DB2 データベースを指す Spring データソースを宣言しようとしています。現在、org.springframework.jdbc.datasource.DriverManagerDataSource を使用して接続をセットアップしていますが、データソース Bean でデータベースのデータベース スキーマを指定する方法が見つかりません。誰かがこれについて私を助けることができますか?
3 に答える
問題は、スキーマを設定する標準的な方法がないことです。各データベースには異なるメカニズムがあります。
回避策は、データベースの URL の一部としてスキーマを設定することです...
db2 の場合、URL は次のようになります。
jdbc:db2://SERVER_NAME:PORT/DATABASE:currentSchema=SCHEMA_NAME;
それが役立つことを願っています...
特記事項: 必ずセミコロンを追加してください。そうしないと、URL が無効であるというエラーが表示されます。また、最後の後に何もしないでください。存在します (スペースでさえありません)。
標準の Spring 名前空間でこれを行う手段はありません。構成にスキーマを追加する要求に対する Rob Harrop の応答:
一般に、この種の機能は接続プールにプッシュする必要があります。これは、デコレーターを介してこれを行うエレガントでパフォーマンスの高い方法がないためです。プールは、作成する接続ごとに 1 回スキーマを設定できますが、ここでは、接続が取得されるたびに設定する必要があります。
どうしてもプロキシを構成に設定したい場合は、サブミッターが、スキーマを指定できるようにするためのプロキシ用のコードをいくつか含めました。
接続でスキーマの所有者をユーザーとして使用する場合、その接続はその特定のスキーマを指します。すなわち。ユーザーuser1がschema1という名前のデータベーススキーマの所有者である場合、ユーザーuser1を使用してデータベースに接続すると、デフォルトで接続はschema1を指します。
Springが提供するUserCredentialsDataSourceAdapterを使用して、ログインしているユーザーに基づいてさまざまなスキーマに接続しました。これにより、ユーザーに基づいて特定のスキーマを指すデータソースが提供されます。これは、スレッドベースのログイン情報を使用します。各スレッドは、接続するスキーマを決定し、それに応じてユーザーに提供する必要があります。