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
Freigeben: 2024-10-24 21:35:31
Original
993 Leute haben es durchsucht

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<Customer, Integer> {}

public interface OrderRepository extends JpaRepository<Order, Integer> {}</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!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage