首页 文章

Spring Boot Repository Annotated Interface中的多个数据源

提问于
浏览
7

我的应用程序基于Spring Boot,Hibernate,MySQL使用Spring Data JPA来拼接它们 .

用例是使用从属数据库节点进行大量读取操作,以避免从主mysql节点提供所有流量 . 实现此目的的一种方法是让多个实体管理器指向单独的数据源(一个到主节点,另一个到从节点) . 在下面的SO问题和博客中已经很好地解释了这种方式 .

Spring Boot, Spring Data JPA with multiple DataSources

https://scattercode.co.uk/2016/01/05/multiple-databases-with-spring-boot-and-spring-data-jpa/

我遇到的问题是要了解是否有一种方法可以在我的Repository Annotated Interface中为不同的用例注入不同的实体管理器 .

我认为可以完成的唯一方法是使用自定义实现扩展存储库,该实现使用自定义实体管理器注释相关的persistenceContext,如下所示 .

public interface CustomerRepository extends JpaRepository<Customer, Integer>, MyCustomCustomerRepository{
}

public class MyCustomCustomerRepositoryImpl implements MyCustomCustomerRepository {

        @PersistenceContext(unitName = "entityManagerFactoryTwo")
        EntityManager entityManager;
}

我想避免做这个自定义实现 . 任何帮助解决这个用例(我觉得应该是非常常见的)将不胜感激 .

注意:两个数据库中的实体都相同,因此为实体扫描提供单独的包,类似的解决方案可能不起作用 .

2 回答

相关问题