Spring引导中具有mariaDB的多个数据库

时间:2018-09-11 06:58:20

标签: java hibernate spring-boot jpa mariadb

我需要知道从多个数据库访问存储库和实体类的简单步骤。 示例:我必须从单个服务请求访问 DB1 中的 User 表和 DB2 中的电子邮件。 / p>

数据库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

DB 2

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

3 个答案:

答案 0 :(得分:1)

解决方案1:

您可以创建一个有权访问两个数据库的用户,然后在查询外部表时使用完全限定的表名。

MySQL支持dbname.tablename语法来访问当前数据库范围之外的表。

这要求当前连接的用户具有适当的权限,才能从另一个物理数据库中的请求表中读取数据。

解决方案2:

您可以按照此处所述配置两个数据源:

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

答案 1 :(得分:1)

(不是直接答案。)

如果您要使用的语言不是普通英语,请考虑以下设置:

休眠XML:

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

连接网址:

db.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&character_set_server=utf8mb4

答案 2 :(得分:0)

@Table(name="tablename", catalog="db2")

为我工作