하나의 데이터베이스를 사용할 때는 application.properties 또는 application.yml에 설정을 해주면 바로 db 세팅을 해주지만 다중 db를 사용할 때는 직접 설정해주어야한다.
1. application.properties 또는 application.yml에 기본 설정해주기
spring.datasource.url = jdbc:mysql://localhost:33061/shop_db
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.datasource.username = root
spring.datasource.password = pw
spring.second-datasource.url = jdbc:mysql://localhost:33061/community_db
spring.second-datasource.driverClassName = com.mysql.cj.jdbc.Driver
spring.second-datasource.username = root
spring.second-datasource.password = pw
2. Datasource
두개의 datasource를 각각 설정해준다. 다중 db를 사용할 때는 각 db마다 설정을 해줘야하고, 첫번째 DB 설정 클래스 안에 있는 Bean들에는 @Primary를 붙여줘야한다.
- @Primary : 설정간의 충돌을 막아주고, 우선 주입시켜줌
datasource 설정 방법은 아래의 글에 작성해두었다!
2024.07.11 - [spring boot] - DataSource 설정 예제
DataSource 설정 예제
DataSource커넥션을 획득하는 방법을 추상화 한 인터페이스이다.public interface DataSource { Connection getConnection() throws SQLException;} DataSource에 설정해 준 메타 데이터들을 토대로 DB와의 Connection을 생성하
study-minjeong.tistory.com
3. 그 외의 필요한 Bean 등록
>> 설정 파일에 DataSource 설정, EntityManagerFactory, TransactionManager 설정이 다 되어 있으면, 이 과정은 안해도 되는 듯?
@Configuration
public class AppConfig {
/* JPA 관련 설정 */
@PersistenceContext(unitName = "primaryEntityManager")
private EntityManager primaryEntityManager;
@PersistenceContext(unitName = "secondEntityManager")
private EntityManager secondEntityManager;
}
등록해준 후 이 Bean들을 필요한 곳에서 사용하면 된다.
아래는 테스트 해본 결과~~
오류가 뜬다....
오류 정리한 내용들...
2024.07.16 - [back-end/spring boot] - [오류] Invalid bound statement (not found)
2024.07.16 - [back-end/spring boot] - [오류] 다중 데이터베이스 설정을 각각 했는데 같은 설정값이 적용된 경우