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複数のデータ ソースに接続しようとすると例外が発生する場合は、次の点を確認することが重要です。免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3