Heim >Java >javaLernprogramm >Wie verbinde ich mehrere Spring Data JPA-Repositorys mit verschiedenen Datenquellen in Spring Boot?

Wie verbinde ich mehrere Spring Data JPA-Repositorys mit verschiedenen Datenquellen in Spring Boot?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-24 21:35:31995Durchsuche

How to Connect Multiple Spring Data JPA Repositories to Different Data Sources in Spring Boot?

Spring Boot, Spring Data JPA mit mehreren Datenquellen

Das Verbinden mehrerer Repositorys mit verschiedenen Datenquellen ist mit Spring Boot und Spring Data JPA möglich. Der referenzierte Blog-Beitrag bietet eine Lösung, aber hier ist ein detaillierterer Ansatz:

Konfiguration:

Erstellen Sie separate Konfigurationsklassen für jede Datenquelle. Nachfolgend finden Sie Beispiele für zwei Datenquellen:

CustomerDbConfig (Erste Datenquelle)

<code class="java">@Configuration
@EnableJpaRepositories(
        entityManagerFactoryRef = "customerEntityManager",
        transactionManagerRef = "customerTransactionManager",
        basePackages = {"com.mm.repository.customer"})
public class CustomerDbConfig {

    // Bean definitions for data source, entity manager factory, and transaction manager for first data source
}</code>

OrderDbConfig (Zweite Datenquelle)

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

    // Bean definitions for data source, entity manager factory, and transaction manager for second data source
}</code>

Entitäten:

Definieren Sie Entitäten (Modelle) für jede Datenquelle, wie zum Beispiel:

<code class="java">@Entity
@Table(name = "customer")
public class Customer {

    // ...
}

@Entity
@Table(name = "order")
public class Order {

    // ...
}</code>

Repositorys:

Erstellen Sie Repositorys für jede Entität, wie zum Beispiel:

<code class="java">public interface CustomerRepository extends JpaRepository<Customer, Integer> {}

public interface OrderRepository extends JpaRepository<Order, Integer> {}</code>

Anwendung (Hauptklasse):

Stellen Sie in der Hauptanwendungsklasse sicher, dass Alle erforderlichen Beans werden erstellt und der Spring-Anwendungskontext wird eingerichtet.

<code class="java">@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}</code>

Eigenschaften:

Konfigurieren Sie die beiden Datenquellen in der Datei application.properties, einschließlich Details wie URL, Benutzername, Passwort und Treiberklassenname.

<code class="properties"># Customer Data Source
spring.datasource.primary.url=...
spring.datasource.primary.username=...
spring.datasource.primary.password=...
spring.datasource.primary.driverClassName=...

# Order Data Source
spring.datasource.secondary.url=...
spring.datasource.secondary.username=...
spring.datasource.secondary.password=...
spring.datasource.secondary.driverClassName=...</code>

Fehlerbehebung:

Wenn Ausnahmen im Zusammenhang mit fehlenden oder doppelten Beans auftreten, stellen Sie sicher, dass :

  • Die Bean-Definitionen in den Konfigurationsklassen sind eindeutig.
  • Die Basispakete für jedes Repository sind korrekt.
  • Die Datenquelleneigenschaften sind in der Anwendung ordnungsgemäß konfiguriert .properties.
  • Jede @Transactional-Annotation gibt den richtigen Transaktionsmanager für die jeweilige Datenquelle an.

Das obige ist der detaillierte Inhalt vonWie verbinde ich mehrere Spring Data JPA-Repositorys mit verschiedenen Datenquellen in Spring Boot?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn