Spring Boot et Spring Data JPA peuvent être utilisés pour se connecter à plusieurs sources de données. Pour ce faire, vous pouvez utiliser l'annotation @EnableJpaRepositories pour spécifier le package de base de vos référentiels et l'annotation @EnableTransactionManagement pour activer la gestion des transactions. Vous pouvez ensuite utiliser l'annotation @Transactional sur les méthodes de votre référentiel pour spécifier quelle source de données utiliser pour chaque méthode.
Par exemple, le code suivant montre comment configurer Spring Boot pour se connecter à deux sources de données :
<code class="java">@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(){ // ... } // ... }</code>
Ce code créera deux beans EntityManagerFactory, un pour chaque source de données. L'annotation @Transactional sur les méthodes du référentiel spécifiera ensuite quelle EntityManagerFactory utiliser pour chaque méthode. Par exemple, le code suivant montre comment utiliser l'annotation @Transactional pour spécifier que la méthode findCustomer doit utiliser le bean customerEntityManager :
<code class="java">@Repository public interface CustomerRepository { @Transactional(value = "customerEntityManager") Customer findCustomer(Integer id); // ... }</code>
Si vous obtenez des exceptions lorsque vous essayez de connectez-vous à plusieurs sources de données, il est important de vérifier les points suivants :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!