OpenJPAでSpringbootアプリケーションを作成しています。SpringBootでデータソースを動的に作成するOpenJPAアプリケーション(OpenJPAでマルチテナントを実装する)
私の要件は、複数のデータソースに動的に接続する必要があり、実行時にいくつかの残りのエンドポイントを呼び出すことによってデータソースの資格情報が取得されることです。ここで
は、コントローラクラスです:
@RestController
public class StationController {
@Autowired
BasicDataSource dataSource;
私は私の顧客名に依存jdbc_urlを返すサービスがあります。
public String getDSInfo(String customername){
// code to get the datasource info (JDBC URL)
}
を私の質問は以下のとおりです。
実行時にデータソースの資格情報を取得することによってデータソースを作成する方法はありますか私の他のサービス(顧客IDを取り、顧客固有のデータソースを返す)?
私のアプリケーションはWebベースのアプリケーションなので、多くの顧客が同時にアクセスしますので、非常に多くの異なるデータソースを作成して処理する方法は?
注:
コードが実行時にのみ、いくつかのサービスを焼成することにより、顧客固有のデータソースに関する情報を取得しますので、私はXML設定ファイル内のデータソースの資格情報をハードコーディングすることはできません。
私はHibernateでいくつかの実装を見つけましたが、私はOpenJPAでSpringbootを使用しています。 OpenJPA固有のヘルプが必要です。
私にお試しください。このソリューションは、複数の顧客が同時にアプリケーションにアクセスする場合にも機能しますか? –
はい、それは考えです。特定のカスタムはURLに顧客固有のコードを渡すことでアプリに到達することができます。ユーザーがログインすると、ローカルのスレッドに設定され、カスタムエンティティマネージャを使用してデータアクセスを行うと、エンティティマネージャは顧客のデータソースをマップから取得します。魔法は顧客のカスタムスコープの使用です。これはすべてビデオの最後の10〜15分で説明されています。 – PaulNUK
リンクのおかげで、これらはSpringのOpenJPAアプリケーションにも同様に適用できますか? –