IT

Maria를 사용한 스프링 부트에서의 다중 데이터베이스DB

itgroup 2023. 1. 21. 09:43
반응형

Maria를 사용한 스프링 부트에서의 다중 데이터베이스DB

다중 데이터베이스에서 리포지토리 및 엔티티 클래스에 액세스하는 간단한 단계를 알아야 합니다.예:DB1에 사용자 테이블이 있고 DB2에 이메일이 있는 경우 단일 서비스 요청에서 액세스해야 합니다.

DB 1

spring.datasource.url = jdbc:mysql://localhost:3306/dbName1?useSSL=false
spring.datasource.username = user
spring.datasource.password = password
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.hibernate.ddl-auto = update

DB2

spring.datasource.url = jdbc:mysql://localhost:3306/dbName2?useSSL=false
spring.datasource.username = user
spring.datasource.password = password
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

기타 속성

spring.jpa.properties.hibernate.jdbc.batch_size=20
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true
spring.servlet.multipart.max-file-size=100MB 
spring.servlet.multipart.max-request-size=100MB

해결책 1:

두 데이터베이스에 모두 액세스할 수 있는 사용자를 작성한 후 외부 테이블을 쿼리할 때 완전한 테이블 이름을 사용할 수 있습니다.

MySQL은 dbname.tablename 구문을 지원하여 현재 데이터베이스 범위 밖의 테이블에 액세스합니다.

이렇게 하려면 현재 연결된 사용자가 다른 물리적 DB에 있는 요청된 테이블에서 읽을 수 있는 적절한 권한이 있어야 합니다.

해결책 2:

다음의 설명에 따라서, 2개의 데이터 소스를 설정할 수 있습니다.

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html#howto-two-datasources

(직답은 아닙니다).

일반 영어 이외의 텍스트를 사용하는 경우는, 다음의 설정을 고려해 주세요.

최대 절전 XML:

<property name="hibernate.connection.CharSet">utf8mb4</property>
<property name="hibernate.connection.characterEncoding">UTF-8</property>
<property name="hibernate.connection.useUnicode">true</property>

연결 URL:

db.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&character_set_server=utf8mb4
@Table(name="tablename", catalog="db2")

나를 위해 일했다

언급URL : https://stackoverflow.com/questions/52270332/multiple-databases-in-spring-boot-with-mariadb

반응형