「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Spring Boot と Spring Data JPA を使用して複数のデータ ソースに接続するにはどうすればよいですか?

Spring Boot と Spring Data JPA を使用して複数のデータ ソースに接続するにはどうすればよいですか?

2024 年 10 月 31 日公開
ブラウズ:229

How can I use Spring Boot and Spring Data JPA to connect to multiple data sources?

Spring Boot、Spring Data JPA と複数のデータソース

Spring Boot および Spring Data JPA を使用して、複数のデータ ソースに接続できます。これを行うには、 @EnableJpaRepositories アノテーションを使用してリポジトリの基本パッケージを指定し、 @EnableTransactionManagement アノテーションを使用してトランザクション管理を有効にします。その後、リポジトリ メソッドで @Transactional アノテーションを使用して、各メソッドに使用するデータ ソースを指定できます。

たとえば、次のコードは、2 つのデータ ソースに接続するように Spring Boot を構成する方法を示しています。 ]

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "orderEntityManager",
        transactionManagerRef = "orderTransactionManager",
        basePackages = {"com.mm.repository.customer"})
public class CustomerDbConfig {

    @Bean(name = "customerEntityManager")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
        // ...
    }

    // ...
}

@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "orderEntityManager",
        transactionManagerRef = "orderTransactionManager",
        basePackages = {"com.mm.repository.order"})
public class OrderDbConfig {

    @Bean(name = "orderEntityManager")
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
        // ...
    }

    // ...
}
このコードは、各データ ソースに 1 つずつ、2 つの EntityManagerFactory Bean を作成します。リポジトリ メソッドの @Transactional アノテーションは、各メソッドに使用する EntityManagerFactory を指定します。たとえば、次のコードは @Transactional アノテーションを使用して、findCustomer メソッドが customerEntityManager Bean を使用するように指定する方法を示しています:

@Repository
public interface CustomerRepository {

    @Transactional(value = "customerEntityManager")
    Customer findCustomer(Integer id);

    // ...
}
Exceptions

複数のデータ ソースに接続しようとすると例外が発生する場合は、次の点を確認することが重要です。

    @EnableJpaRepositories がおよび @EnableTransactionManagement アノテーションが構成クラスに存在します。
  • @Transactional アノテーションがリポジトリ メソッドに存在し、使用する正しい EntityManagerFactory Bean が指定されていることを確認してください。
  • 例外を検査してください問題の原因を特定するには、詳細にメッセージを送信してください。
リリースステートメント この記事は次の場所に転載されています: 1729758348 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3