2017-04-06 4 views
3

私は春ブーツとjooQを使用したいです。私はマスタスレーブアーキテクチャを持っているので、マスタースレーブアーキテクチャ(マスタのスレーブアーキテクチャでは、&のスレーブを読んでください)でjooQを使用したいと思います。jooQ春ブーツ複数のスキーマ(ライト・スプリットを読む)

どうやって進める必要があります。今私はjooQ

<configuration> 
    <jdbc> 
     <driver>com.mysql.jdbc.Driver</driver> 
     <url>${datasource.primary.url}</url> 
     <user>${datasource.primary.username}</user> 
     <password>${datasource.primary.password}</password> 
    </jdbc> 
    <generator> 
     <name>org.jooq.util.DefaultGenerator</name> 
     <database> 
      <name>org.jooq.util.mysql.MySQLDatabase</name> 
      <includes>.*</includes> 
      <excludes/> 
      <inputSchema>jpa</inputSchema> 
     </database> 
     <generate> 
      <deprecated>false</deprecated> 
     </generate> 
     <target> 
      <packageName>com.gensrc.model</packageName> 
      <directory>src/main/java</directory> 
     </target> 
    </generator> 
</configuration> 

を設定するのpom.xmlを使用していますし、その後、ちょうどDSLContext

をオートワイヤリングしかし、どのように私は今、自分のコードを変更します。あなたのコメントから

+0

正確に何をしようとしていますか?私はあなたが2つのユーザまたはスキーマやデータベースを持っていると思っていますが(執筆用と読書用)、どのように関連していますか、そしてjOOQが何を期待していますか? - * "しかし、今私のコードを変更するにはどうすればいいですか" * - どのようなコードですか? –

+0

私は2つの異なるデータベース上に2つの異なるデータベースを持っています。どちらもお互いのレプリカです。 1つは読み込み(スレーブ)に使用され、その他は書き込み(マスタ)に使用されます。私はすべての私の書き込みクエリをマスターに、そしてすべての読み込みクエリをスレーブにルーティングしたいと思う。 –

答えて

0

私はルートすべての私の書き込みクエリをスレーブに&すべての私の読取り問合せを習得するためにしたいです。

私は書き込み=マスター、読み取り=スレーブの間のこのハード区別が良いアイデアであるとは確信していません。時には、あなたはおそらく、スレーブに読み出しクエリを送信すると、誤った結果をもたらすであろうその場合には、(すなわち、コミットされていないデータをリードバック)同じトランザクション境界内だけでなく、マスターから読み込む必要があります。

ので、このルーティングを実装するのに最適な場所は別々のDataSourceのインスタンスを持っているし、それに応じてjOOQにそれらを注入することです。そして、あなたのサービス層のマスターとスレーブを、jOOQのために透過的に明示的に分けます。

あなたは、もちろん、jOOQ ExecuteListenerを使用して、クエリのタイプ(ExecuteContext.type())に応じて、右のJDBC ConnectionとjOOQを提供することにより、あなたの元の要件を実装することもできますが、再び、私はこれは非常にすぐに壊れると思います。

+0

はい、私は基本的に2つのデータを作成していることを理解しています。そして、jooQに注入してください。しかし、どのようにデータソースをjooQに注入するのですか?私は現在プライマリデータソースを取っているDSLContextをautowiringしています。 @Qualifierを使用してDSLContextを初期化しようとしましたが、初期化されていません。あなたは同じコードを共有できますか? –

+0

はい、私はJooQ DSLContextへのデータSoucreを注入することができていた場合にも行われます読み取り、書き込みtransasctionのマスターを使用する一般的なシナリオを、thatsの。 –

+0

@AnkitBansal:あなたにはたくさんの質問があります:)しかし、あなたの実際の質問テキストには誰もいません。あなたはあなたが持っている問題のステートメントごとにStack Overflowに関する新しい質問をしてもらえますか?疑わしい場合は、Stack Overflowの仕組みを説明する便利なページがあります:http://stackoverflow.com/tour –