يمكن استخدام 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);
// ...
}
إذا كنت تحصل على استثناءات عند محاولة الاتصال بمصادر بيانات متعددة، فمن المهم التحقق مما يلي:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3