私は次のことをしているエンジンに取り組んでいます:
- DBからデータプロバイダー情報を取得します(データを取得するために接続するデータベースとスキーマの詳細を教えてくれます)
- その情報を使用してデータベースに接続し、後で XML コンテンツを作成するために使用するデータを取得します。
データベース接続管理を処理および分離するための標準的なセットアップは、DataSource Bean (Spring を使用してコンポーネントを配線しています) を作成し、それを ProviderConfigDao (接続構成をロード) および ContentDao (以前にロードされた接続の詳細を使用してデータをロード) に注入することです。 . これにより、接続の処理が実際のコードから適切に分離されるため、DAO クラスは、接続がいつどのように作成/オープン/クローズされるかを知る必要がありません。
残念ながら、このセットアップは機能しません。接続を作成するときに、データベース スキーマを指定できるようにする必要があるためです。最初からすべての異なるスキーマを知っているわけではないため、それらすべてをカバーする一連の DataSource オブジェクトを作成することはできません。したがって、DataSource オブジェクトは実行時に作成する必要があり、その作成はユーザーから隠されています。
私が考えることができる唯一の解決策は次のとおりです。
1 つのメソッドを持つ別のクラス/インターフェイス (DataSourceProvider) を用意します。
//Gets the connection URL as parameter (which includes the schema name). DataSource getDataSource(String url);
- Spring 構成に Bean を追加して、各スキーマの DataSource オブジェクトの作成を管理するカスタム実装を提供します。
- DataSource オブジェクトの代わりに、そのオブジェクトを DAO クラスに挿入します。
それは悪い解決策ではありませんが、オープンソースパッケージですでにこのようなものがサポートされているのではないかと思っていました...すでに完了してテストされたものを使用してから、車輪を再発明したいと思います。
乾杯、ステフ。