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?

Oct 24, 2024 pm 09:35 PM

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Repositorys:

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

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

public interface OrderRepository extends JpaRepository&lt;Order, Integer&gt; {}</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Erklärung dieser Website
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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

ICEBERG: Die Zukunft von Data Lake Tabellen ICEBERG: Die Zukunft von Data Lake Tabellen Mar 07, 2025 pm 06:31 PM

ICEBERG: Die Zukunft von Data Lake Tabellen

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

So teilen Sie Daten zwischen Schritten in der Gurke So teilen Sie Daten zwischen Schritten in der Gurke Mar 07, 2025 pm 05:55 PM

So teilen Sie Daten zwischen Schritten in der Gurke

See all articles