-
[Spring Boot] Multiple DataBases 를 사용하는 환경에서 table이 자동으로 생성되지 않음(ddl-auto)🩸 삽질의 추억 2024. 4. 20. 14:54728x90
상황:
- Spring boot 3.2.x 사용
- MySQL DB 두개 사용. 다중 데이터베이스 환경
- application.yml 에 작성한 내용:
hibernate: ddl-auto: create (update, create-drop 모두 안됨)
- 각 DBConfig 마다 적은 내용의 일부
@Bean public LocalContainerEntityManagerFactoryBean bankCoreEntityManager() { LocalContainerEntityManagerFactoryBean entityManagerFactoryBean = new LocalContainerEntityManagerFactoryBean(); entityManagerFactoryBean.setDataSource(bankCoreDataSource()); entityManagerFactoryBean.setPackagesToScan("com.capstone2024.sw.kmu.exchangeservice.domain.bankcore"); entityManagerFactoryBean.setJpaVendorAdapter(new HibernateJpaVendorAdapter()); return entityManagerFactoryBean;
해결:
- application.yml 에 적은 hibernate:ddl-auto: 는 삭제한다.
- 각 DB Config 의 LocalContainerEntityMangerFactoryBean 의 내용에
"hibernate.hbm2ddl.auto" 추가
@Bean public LocalContainerEntityManagerFactoryBean bankCoreEntityManager( EntityManagerFactoryBuilder builder ) { // 이거 추가 Map<String, Object> properties = new HashMap<>(); properties.put("hibernate.hbm2ddl.auto", "update"); return builder .dataSource(bankCoreDataSource()) .packages("com.capstone2024.sw.kmu.exchangeservice.domain.bankcore") .persistenceUnit("bankcore") .properties(properties) .build(); }
spring.jpa.hibernate.ddl-auto= 가 동작하지 않는 이유:
두 개의 DataSource가 자체 LocalContainerEntityManagerFactoryBeans를 만들고 있기 때문.
LocalContainerEntityManagerFactoryBean을 구성함으로 인해 spring.jpa.hibernate.ddl-auto는 비활성화되기에 해당 property는 직접 구성해야 한다.
Builder 로 바꾼 이유는 딱히 없음. 그냥 참고한 자료들이 대부분 builder 로 써서 나도 따라한거임..
도움이 된 링크 :
https://stackoverflow.com/questions/28275448/multiple-data-source-and-schema-creation-in-spring-boot
삽질한 이유:
아예 몰랐음
728x90'🩸 삽질의 추억' 카테고리의 다른 글
[NCP, Spring Boot] NCP 로 HTTPS, SSL, 서브도메인 적용하기 (0) 2024.05.07 [Docker Desktop] 앱 안 열림/ resume 안됨/ restart 안됨 (0) 2024.05.04 [보안] HTTPS/SSL/MAC/전자서명 - 헷갈렸던 개념 한줄 씩 정리 (1) 2024.04.20 [JPA SQL (JPQL)] @Query 작성했더니 빈 값 리턴 (0) 2024.04.18 [Spring Boot] swagger 로 테스트 중, body를 넘기는데 null 값이 들어왔다고 함 (0) 2024.04.17