현재 하나의 데이터베이스가 연결되어 작동 중입니다. 다른 (그리고 결국 2 개) 데이터베이스를 연결하고 싶습니다. 어떻게해야합니까? 어노테이션과 특성 파일 만 사용하는 솔루션이 있어야합니다.JPA 봄 부팅 : 여러 데이터베이스를 어떻게 연결합니까?
나는이 Profile Specific Properties 을 읽었으며, 도움이되었다.하지만 런타임 중에 코드에서 한 프로필에서 다른 프로필로 전환하는 방법을 모르겠다. 다른 데이터베이스에서 물건을 검색/유지하려고하기 전에 한 번에 하나의 프로필에 연결해야한다고 가정합니다.
나는이 질문을 How to use 2 or more databases with spring?에서도 읽었지만, 어떻게 적용되는지 잘 모르겠다. 나는 컨트롤러 클래스를 사용하지 않고 무엇이 그 일을하는지 모른다. 또한 응답에서 언급 한 config 클래스가 실제로 특정 DO에 어떻게 연결되는지 잘 모르겠습니다.
이 내 application.properties 파일입니다
package testApplication;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.orm.jpa.EntityScan;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import fileRetrieval.InputFileParse;
import lmDataObjects.LMClientDO;
import lmDataObjects.LoadMethodDO;
import repositories.LMClientRepository;
import repositories.LoadMethodRepository;
@SpringBootApplication
@EnableJpaRepositories(basePackageClasses = LoadMethodRepository.class)
@EntityScan(basePackageClasses = LoadMethodDO.class)
@EnableCaching
public class Application {
private static final Logger log = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public CommandLineRunner demo(LoadMethodRepository lm_repo, LMClientRepository lmc_repo) {
return (args) -> {
List<LMClientDO> lmlist = InputFileParse.getMultiGroupfile();
List<String> uniqueMediaIds = new ArrayList(InputFileParse.getUniqueMediaIds());
for (int i = 0; i < InputFileParse.getUniqueMediaIds().size(); i ++){
lm_repo.save(new LoadMethodDO(uniqueMediaIds.get(i)));
}
for (int i = 0; i < lmlist.size(); i++){
lmc_repo.save(new LMClientDO(lmlist.get(i).getClientId(), lmlist.get(i).getMediaId()));
}
//Here is where I would like to do stuff with data from the other database that I have not connected yet
};
}
}
나는 또한 새로운했다 : 이것은 내 응용 프로그램 파일입니다
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=***
spring.datasource.password=***
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
(내 파일에 자사가 사용자 이름과 암호 만을 표시) application-MTS.properties라는 속성 파일을 만들고 거기에 새 데이터베이스의 데이터를 넣습니다. 아직도 그걸로 무엇을 해야할지 잘 모릅니다.
spring.datasource.username=***
spring.datasource.password=***
spring.datasource.url=jdbc:sqlserver://SCHQVSQLCON2\VSPD:1433;database=dbMTS;integratedSecurity=false;
[샘플 프로젝트는 여기에 있습니다] (https://github.com/snicoll-demos/demo-multi-entity-managers) –