0

クライアントごとに個別のデータベースがありますが、ビジネスロジックとテーブルはクライアントごとに同じです。私は共通のサービスと各クライアントのDAO層が欲しい。 DAOでは、ログに記録されたユーザークライアントに基づいてデータソースを選択します。 @Transactionalでは、トランザクションマネージャのBean IDを渡す必要があります。 @Transactional注釈で共通サービス層を作成する方法。複数のトランザクションマネージャが春に実行時に選択します。

同じ質問を使用すると、動的にデータベース接続を作成する場合は、見ているこちら

  1. Multiple transaction managers - Selecting a one at runtime - Spring

  2. Choose between muliple transaction managers at runtime

が、誰も応答

+0

、あなたは別々のデータベースが、同じテーブルによって何を意味していますか?つまり、各データベースには同じスキーマがありますか? –

+0

はい。各データベースには同じスキーマがあります –

+0

実際に解決策を探していますが、それ以外にも、クライアントごとに別々のデータベースを用意することをお勧めしませんスキーマは同じですが、なぜ単一のデータベースを使用しないのですか? 100台のクライアントがあっても100台のデータベースにつながり、管理するデータベース接続数は100になります。それは資源の浪費です。 –

答えて

0

ですthis SO post。リンクポストから

そのような APIで設定することができないこれらのプロパティのほとんど基本的にJDBCで、むしろ彼らは、実装に依存します。 JDBC の処理方法は、 ベンダーごとに異なる接続URLを許可することです。

それでは、あなたがやっていることはJDBCシステムは、URLをどうするか を知ることができるようにドライバを登録です:

DriverManager.registerDriver((Driver) 
Class.forName("com.mysql.jdbc.Driver").newInstance()); 

その後、あなたは URLを形成:

String url = 
"jdbc:mysql://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]" 

最後に、 nnection:もっと 洗練されたJDBCで

Connection c = DriverManager.getConnection(url); 

は、接続プールと などとの関与を取得、およびアプリケーション・サーバーは、多くの場合、JNDIで ドライバを登録する独自の方法を持っていて、データソースを検索しますそこから getConnectionを呼び出してください。

MySQLがサポートするプロパティについては、こちらを参照してください。リンクは無効です)。

EDIT:もう一つの思考、技術だけ がクラスが登録独自の静的初期化子を有していなければならないようにClass.forName(「はcom.mysql.jdbc.Driver」)は、十分でなければならないコードの行を有しますa バージョンですが、JDBCドライバでは時々JDBCドライバが認識されないので、わからない場合は、 2番目の登録に害はほとんどありません。

私はそれを試していないので、これがうまくいくかどうかわかりませんが、 が試してみることができます。

ここでは、値を指定せずにDAOの上に@Transactionalアノテーションを使用します(これは機能します)。あなたのDAOクラスでは、DataSource beanを注入するのではなく、上記のリンクで指定されているように独自のdataSourceを作成し、実行時にその依存性を注入するか、getter setterメソッドを使用するか、newキーワードを使用します。私はそのトリックをやりたいと思う。

注:私はまだ自分でテストしていないので、これがうまくいくと私に知らせてください。

0

最終目標を達成するために、複数のトランザクションマネージャを設定して切り替える必要はありません。代わりに、org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSourceの機構を備えたSpringを使用してください。

詳細な例は、ここで見つけることができます:別のノートに

  1. https://spring.io/blog/2007/01/23/dynamic-datasource-routing/
  2. http://howtodoinjava.com/spring/spring-orm/spring-3-2-5-abstractroutingdatasource-example/
関連する問題