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 должен использовать bean-компонент customerEntityManager:
@Repository
public interface CustomerRepository {
@Transactional(value = "customerEntityManager")
Customer findCustomer(Integer id);
// ...
}
Если при попытке подключения к нескольким источникам данных возникают исключения, важно проверить следующее:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3