Spring Boot y Spring Data JPA se pueden usar para conectarse a múltiples fuentes de datos. Para hacer esto, puede usar la anotación @EnableJpaRepositories para especificar el paquete base para sus repositorios y la anotación @EnableTransactionManagement para habilitar la administración de transacciones. Luego puede usar la anotación @Transactional en los métodos de su repositorio para especificar qué fuente de datos usar para cada método.
Por ejemplo, el siguiente código muestra cómo configurar Spring Boot para conectarse a dos fuentes de datos:
@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(){
// ...
}
// ...
}
Este código creará dos beans EntityManagerFactory, uno para cada fuente de datos. La anotación @Transactional en los métodos del repositorio especificará qué EntityManagerFactory usar para cada método. Por ejemplo, el siguiente código muestra cómo usar la anotación @Transactional para especificar que el método findCustomer debe usar el bean customerEntityManager:
@Repository
public interface CustomerRepository {
@Transactional(value = "customerEntityManager")
Customer findCustomer(Integer id);
// ...
}
Si obtiene excepciones al intentar conectarse a múltiples fuentes de datos, es importante verificar lo siguiente:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3