2017-03-28 14 views
2

私はこのリンクをたどり、2つ以上のデータソースを設定しようとしています。スプリングデータJPA複数のデータソース

https://www.ccampo.me/java/spring/2016/02/13/multi-datasource-spring-boot.html

これは、2つのデータソースを定義する方法について説明し、しかし、実際に照会しながら、それらを使用する方法について説明していませんでした。

application.propファイルにコンフィグレーションクラス&が追加されました。しかし、それらをrepo機能/サービス機能でどのように定義するか?

コントローラ

public class EmpController { 
    @RequestMapping("/abcd") 
    public List<Employee> findAll() { return empService.findAll(); } 
} 

サービス

@Service 
public class EmpService { 
    @Autowired 
    private EmpRepository empRepo; 

    public List<Employee> findAll() { return empRepo.findAll(); } 
} 

レポ

public interface EmpRepository extends JpaRepository<Employee, Long> {} 

設定

@Configuration 
public class DataSourceConfiguration { 
    @Bean 
    @Primary 
    @ConfigurationProperties(prefix = "datasource.primary") 
    public DataSource numberMasterDataSource() { 
    return DataSourceBuilder.create().build(); 
    } 

    @Bean 
    @ConfigurationProperties(prefix = "datasource.secondary") 
    public DataSource provisioningDataSource() { 
    return DataSourceBuilder.create().build(); 
    } 
} 

application.properties

# Primary DataSource configuration 
datasource.primary.url=jdbc:mysql://127.0.0.1:3306/jpa 
datasource.primary.username=root 
datasource.primary.password=root 
# Any of the other Spring supported properties below... 

# Secondary DataSource configuration 
datasource.secondary.url=jdbc:mysql://127.0.0.1:3306/jpa2 
datasource.secondary.username=root 
datasource.secondary.password=root 

はまた、私は、私は読む&書き込みのために異なるのDBを持って としてさまざまなデータソースに対して別々のリポジトリを持っていると思いますscroll down toパソコンへ転送します。だから私のすべての挿入クエリは、あるサーバー上にある&他のサーバー上のクエリを読んでいます。 &の書き込み用に異なるリポジトリ/サービスを作成すると、あまりにも多くの冗長コードが存在します。

+0

クエリコードを表示しますか? – johncena

+0

コード –

+0

@AnkitBansalに関する質問を編集しました。データベースは同一で、常に同じです(たとえば、一方は他方の読み取り複製)。そうでない場合、異なるデータベース構造は自動的に同じ(正確な)データを格納しないことを意味します。したがって、どちらも異なるエンティティを必要とし、したがって別々のリポジトリを必要とします。 – manish

答えて

-1

詳細exampleをご覧ください。パッケージを使用して2つの異なるデータソース、別々のリポジトリとモデルを構成し、特定のパッケージのデータソースを構成します。

+0

私は同じリポジトリで作業する必要があります。つまり、diff DBのdiff repoを作成できません。 –

+0

1つのクエリで2つの異なるデータソースのすべての従業員を欲しいですか? – johncena

+0

私は、読み書き用にdiffデータベースを持っています。だから、私は別のDBと&を使用して読んでいるクエリを挿入する、私は2番目のデータベースを使用しているので、あまりにも多くのモジュールがあります。私は、読み書き用に個別のレポ/サービスを作成したいと思っていません。あまりにも多くの冗長コード。 –

関連する問題