2017-03-28 67 views
2

我一直在关注此链接,试图配置两个或更多的数据源。弹簧数据JPA多个数据源

https://www.ccampo.me/java/spring/2016/02/13/multi-datasource-spring-boot.html

它说明了如何定义两个数据源,但没有说明如何实际使用它们,而查询。

我创建了配置类&在application.prop文件中添加了prop。但如何在回购函数/服务函数中定义它们?

控制器

public class EmpController { 
    @RequestMapping("/abcd") 
    public List<Employee> findAll() { return empService.findAll(); } 
} 

服务

@Service 
public class EmpService { 
    @Autowired 
    private EmpRepository empRepo; 

    public List<Employee> findAll() { return empRepo.findAll(); } 
} 

回购

public interface EmpRepository extends JpaRepository<Employee, Long> {} 

配置

@Configuration 
public class DataSourceConfiguration { 
    @Bean 
    @Primary 
    @ConfigurationProperties(prefix = "datasource.primary") 
    public DataSource numberMasterDataSource() { 
    return DataSourceBuilder.create().build(); 
    } 

    @Bean 
    @ConfigurationProperties(prefix = "datasource.secondary") 
    public DataSource provisioningDataSource() { 
    return DataSourceBuilder.create().build(); 
    } 
} 

application.properties

# Primary DataSource configuration 
datasource.primary.url=jdbc:mysql://127.0.0.1:3306/jpa 
datasource.primary.username=root 
datasource.primary.password=root 
# Any of the other Spring supported properties below... 

# Secondary DataSource configuration 
datasource.secondary.url=jdbc:mysql://127.0.0.1:3306/jpa2 
datasource.secondary.username=root 
datasource.secondary.password=root 

而且我DONOT希望有不同的数据源作为 我有读&写不同的数据块单独的存储库。因此,我所有的插入查询将在一台服务器上读取其他服务器上的查询&。如果我创建不同的回购/服务进行读取&的写入,将会出现太多冗余代码

+0

显示您的查询码? – johncena

+0

编辑代码 –

+0

的问题@AnkitBansal,数据库是否相同,并且总是相同的(例如,一个是另一个的只读副本)?否则,不同的数据库结构会自动暗示它们不存储相同(确切)的数据。因此,两者都需要不同的实体,因此需要分开存储库。 – manish

回答

-1

请看详细的example。您将配置两个不同的数据源,使用软件包分隔存储库和模型,并为特定软件包配置数据源。

+0

我必须使用相同的repo,即不能为diff DB创建diff repo。 –

+0

因此,您希望来自两个不同数据源的所有员工使用一个查询? – johncena

+0

我有用于读写的差异数据库。所以,当插入我将使用不同的数据库和读取查询,我将使用第二个数据库,因为有太多的模块。我不想为读写创建单独的回购/服务。太多的冗余代码。 –