ホームページ  >  記事  >  Java  >  Spring Data JPA を使用して Spring Boot で複数のデータ ソースを構成して使用する方法

Spring Data JPA を使用して Spring Boot で複数のデータ ソースを構成して使用する方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-25 01:18:02717ブラウズ

How to Configure and Use Multiple Data Sources in Spring Boot with Spring Data JPA?

複数の DataSource を持つ Spring Boot、Spring Data JPA

@EnableAutoConfiguration と application.properties の使用:

  1. application.properties で複数のデータ ソース構成を定義します。
  2. プライマリ データ ソースに対して @EnableAutoConfiguration を有効にします。
  3. 追加のデータ ソースに対して DataSource、EntityManagerFactory、および TransactionManager を手動で作成します。
  4. 各データ ソースの @Transactional アノテーションで適切なトランザクション マネージャーを指定します。

Example application.properties:

# Primary Data Source
spring.datasource.url=jdbc:h2:mem:default
spring.datasource.username=sa
spring.datasource.password=

# Additional Data Source
additional.datasource.url=jdbc:h2:mem:additional
additional.datasource.username=anotheruser
additional.datasource.password=anotherpassword

Example Configuration Class forプライマリ データ ソース:

<code class="java">@Configuration
@EnableTransactionManagement
@EnableAutoConfiguration
@EnableJpaRepositories(
        entityManagerFactoryRef = "entityManagerFactory",
        transactionManagerRef = "transactionManager",
        basePackages = {"com.example.repository.primary"})
public class PrimaryDataSourceConfig {

    @Bean
    public EntityManagerFactory entityManagerFactory() {
        // Create and configure EntityManagerFactory manually
    }

    @Bean
    public PlatformTransactionManager transactionManager() {
        // Create and configure PlatformTransactionManager manually
    }
}</code>

追加データ ソースの構成クラスの例:

<code class="java">@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
        entityManagerFactoryRef = "additionalEntityManagerFactory",
        transactionManagerRef = "additionalTransactionManager",
        basePackages = {"com.example.repository.additional"})
public class AdditionalDataSourceConfig {

    @Value("${additional.datasource.url}")
    private String url;

    @Value("${additional.datasource.username}")
    private String username;

    @Value("${additional.datasource.password}")
    private String password;

    @Bean
    public DataSource additionalDataSource() {
        // Create and configure DataSource manually
    }

    @Bean
    public EntityManagerFactory additionalEntityManagerFactory() {
        // Create and configure EntityManagerFactory manually
    }

    @Bean
    public PlatformTransactionManager additionalTransactionManager() {
        // Create and configure PlatformTransactionManager manually
    }
}</code>

トランザクション アノテーションを含むサービス クラスの例:

<code class="java">@Service
@Transactional("transactionManager") // Use primary transaction manager
public class PrimaryService {

    // ...
}

@Service
@Transactional("additionalTransactionManager") // Use additional transaction manager
public class AdditionalService {

    // ...
}</code>

このアプローチにより、Spring Boot アプリケーションで複数のデータ ソースを操作する際の制御性と柔軟性が向上します。

以上がSpring Data JPA を使用して Spring Boot で複数のデータ ソースを構成して使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。