1.2.2. 配置多个数据源
注意
Hibernate ORM 扩展支持使用配置属性定义 持久性单元。对于每个持久性单元,指向您选择的数据源。
定义多个数据源的工作方式类似于定义单个数据源,且有一个重要的更改 - 您必须为每个数据源指定一个名称(配置属性)。
以下示例提供三个不同的数据源:
- 默认
-
名为
users的数据源 -
名为
inventory的数据源
每种配置:
quarkus.datasource.db-kind=h2
quarkus.datasource.username=username-default
quarkus.datasource.jdbc.url=jdbc:h2:mem:default
quarkus.datasource.jdbc.max-size=13
quarkus.datasource.users.db-kind=h2
quarkus.datasource.users.username=username1
quarkus.datasource.users.jdbc.url=jdbc:h2:mem:users
quarkus.datasource.users.jdbc.max-size=11
quarkus.datasource.inventory.db-kind=h2
quarkus.datasource.inventory.username=username2
quarkus.datasource.inventory.jdbc.url=jdbc:h2:mem:inventory
quarkus.datasource.inventory.jdbc.max-size=12
注意 configuration 属性中有一个额外的部分。语法如下: quarkus.datasource.[optional name.][datasource property]。
注意
即使只安装了一个数据库扩展,名为 databases 需要至少指定一个 build-time 属性,以便 Quarkus 可以检测到它们。通常,这是 db-kind 属性,但您也可以指定 Dev Services 属性,根据 Dev Services for Databases 指南创建名为 datasources。
1.2.2.1. 命名数据源注入 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
使用多个数据源时,每个 DataSource 也具有 io.quarkus.agroal.DataSource qualifier,并将数据源的名称用作值。
通过使用上一节中提到的属性来配置三个不同的数据源,按如下方式注入每个不同的数据源:
@Inject
AgroalDataSource defaultDataSource;
@Inject
@DataSource("users")
AgroalDataSource usersDataSource;
@Inject
@DataSource("inventory")
AgroalDataSource inventoryDataSource;