簡體   English   中英

如何連接到多個數據庫Spring Boot JPA?

[英]How to connect to multiple databases Spring Boot JPA?

我正在嘗試根據本示例https://github.com/spring-projects/spring-data-examples/tree/master/jpa/multiple-datasources對其進行建模,但它們似乎並未使用屬性文件,即使我困惑。 他們如何輸入數據庫名稱,登錄信息和URL? 我目前擁有的方式是這樣的:

這是我的數據庫之一的配置文件:LM_Config.java

@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "lmEntityManagerFactory",
        transactionManagerRef = "lmTransactionManager")
class LM_Config {

    @Bean
    PlatformTransactionManager lmTransactionManager() {
        return new JpaTransactionManager(lmEntityManagerFactory().getObject());
    }

    @Bean
    LocalContainerEntityManagerFactoryBean lmEntityManagerFactory() {

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);

        LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

        factoryBean.setDataSource(lmDataSource());
        factoryBean.setJpaVendorAdapter(vendorAdapter);
        factoryBean.setPackagesToScan(LM_Config.class.getPackage().getName());

        return factoryBean;
    }


    @Bean
    @Primary
    @ConfigurationProperties(prefix="spring.datasource")
    public DataSource lmDataSource() {
        return DataSourceBuilder.create().build();
    }

}

這是我的數據庫之一的配置文件:MTS_Config.java

@Configuration
@EnableJpaRepositories(entityManagerFactoryRef = "mtsEntityManagerFactory",
        transactionManagerRef = "mtsTransactionManager")
class MTS_Config {

    @Bean
    PlatformTransactionManager mtsTransactionManager() {
        return new JpaTransactionManager(mtsEntityManagerFactory().getObject());
    }

    @Bean
    LocalContainerEntityManagerFactoryBean mtsEntityManagerFactory() {

        HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
        vendorAdapter.setGenerateDdl(true);

        LocalContainerEntityManagerFactoryBean factoryBean = new LocalContainerEntityManagerFactoryBean();

        factoryBean.setDataSource(mtsDataSource());
        factoryBean.setJpaVendorAdapter(vendorAdapter);
        factoryBean.setPackagesToScan(MTS_Config.class.getPackage().getName());

        return factoryBean;
    }


    @Bean
    @Primary
    @ConfigurationProperties(prefix="spring.mtsDatasource")
    public DataSource mtsDataSource() {
        return DataSourceBuilder.create().build();
    }

}

這是我的application.properties文件。 主要關注點應該是從spring.datasource...spring.mtsDatasource...

hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
hibernate.show_sql=true
hibernate.format_sql=true
hibernate.default_schema=dbo
hibernate.packagesToScan=src.repositories.LMClientRepository.java

spring.jpa.generate-ddl=true
spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.DefaultNamingStrategy
spring.datasource.username=LOADdev
spring.datasource.password=lmtdev01
spring.datasource.url=jdbc:sqlserver://schqvsqlaod:1433;database=dbMOBClientTemp;integratedSecurity=false;
spring.datasource.testOnBorrow=true
spring.datasource.validationQuery=SELECT 1
spring.jpa.database=dbMOBClientTemp
spring.jpa.show-sql=true
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect
spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
#spring.jpa.hibernate.ddl-auto=none
#spring.jpa.hibernate.ddl-auto=none 
#spring.jpa.properties.hibernate.hbm2ddl.auto=none

spring.mtsDatasource.username=mtsj
spring.mtsDatasource.password=mtsjapps
spring.mtsDatasource.url=jdbc:sqlserver://SCHQVSQLCON2\VSPD:1433;database=dbMTS;integratedSecurity=false;
spring.mtsDatasource.testOnBorrow=true
spring.mtsDatasource.validationQuery=SELECT 1

他們似乎沒有使用屬性文件,這使我感到困惑。 他們如何輸入數據庫名稱,登錄信息和URL?

答案是該示例使用的是嵌入式數據庫,因此沒有數據庫名稱,用戶名等。

對於您的主要問題,請查看側邊欄中的類似問題,查看@Qualifier的文檔,然后返回一個更具體的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM