"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني استخدام Spring Boot وSpring Data JPA للاتصال بمصادر بيانات متعددة؟

كيف يمكنني استخدام Spring Boot وSpring Data JPA للاتصال بمصادر بيانات متعددة؟

تم النشر بتاريخ 2024-10-31
تصفح:690

How can I use Spring Boot and Spring Data JPA to connect to multiple data sources?

Spring Boot، Spring Data JPA مع مصادر بيانات متعددة

يمكن استخدام Spring Boot و Spring Data JPA للاتصال بمصادر بيانات متعددة. للقيام بذلك، يمكنك استخدام التعليق التوضيحي @EnableJpaRepositories لتحديد الحزمة الأساسية لمستودعاتك، والتعليق التوضيحي @EnableTransactionManagement لتمكين إدارة المعاملات. يمكنك بعد ذلك استخدام التعليق التوضيحي @Transactional في أساليب المستودع الخاص بك لتحديد مصدر البيانات الذي سيتم استخدامه لكل طريقة.

على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية تكوين 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(){
        // ...
    }

    // ...
}

سيؤدي هذا الرمز إلى إنشاء فاصوليا EntityManagerFactory، واحدة لكل مصدر بيانات. سيحدد التعليق التوضيحي @Transactional على طرق المستودع EntityManagerFactory الذي سيتم استخدامه لكل طريقة. على سبيل المثال، يوضح التعليمة البرمجية التالية كيفية استخدام التعليق التوضيحي @Transactional لتحديد أن أسلوب findCustomer يجب أن يستخدم فول customerEntityManager:

@Repository
public interface CustomerRepository {

    @Transactional(value = "customerEntityManager")
    Customer findCustomer(Integer id);

    // ...
}

الاستثناءات

إذا كنت تحصل على استثناءات عند محاولة الاتصال بمصادر بيانات متعددة، فمن المهم التحقق مما يلي:

  • تأكد من أن @EnableJpaRepositories والشروح @EnableTransactionManagement موجودة في فئات التكوين الخاصة بك.
  • تأكد من وجود التعليق التوضيحي @Transactional في أساليب المستودع الخاص بك، وأنه يحدد وحدة الفول EntityManagerFactory الصحيحة المراد استخدامها.
  • افحص الاستثناء أرسل رسالة عن كثب لتحديد سبب المشكلة.
بيان الافراج أعيد طبع هذه المقالة على: 1729758348 في حالة وجود أي انتهاك، يرجى الاتصال بـ [email protected] لحذفها
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3