第 1 章 在红帽构建的 Quarkus 中配置数据源
使用统一配置模型定义 Java 数据库连接(JDBC)和被动驱动程序的数据源。
应用使用数据源访问关系数据库。Quarkus 提供了一个统一配置模型,用于定义用于 Java 数据库连接(JDBC)和被动数据库驱动程序的数据源。
Quarkus 使用 Agroal 和 Vert.x 为 JDBC 和被动驱动程序提供高性能、可扩展的数据源连接池。quarkus-jdbc114
和 quarkus-reactive114-client
扩展提供构建时间优化,并将配置的数据源与 security、健康检查和指标等 Quarkus 功能集成。
有关消耗和使用被动数据源的更多信息,请参阅 Quarkus Reactive SQL 客户端 指南。
另外,请参阅 Quarkus Hibernate ORM 指南,以了解有关消耗和使用 JDBC 数据源的信息。
1.1. 开始在 Quarkus 中配置 数据源
对于熟悉基本权限的用户,本节提供了快速设置数据源的概述和代码示例。
有关示例的更多高级配置,请参阅 参考。
1.1.1. 开发模式中的零配置设置
Quarkus 通过提供 Dev Services 功能来简化数据库配置,为测试或开发(dev)模式启用零配置数据库设置。在 dev 模式中,建议的方法是使用 DevServices,并让 Quarkus 处理数据库,而对于生产环境模式,您可以提供指向 Quarkus 外部管理的数据库配置详情。
要使用 Dev Services,请将所需的数据库类型的适当驱动程序扩展(如 jdbc-postgresql
)添加到 pom.xml
文件中。在 dev 模式中,如果您不提供任何显式数据库连接详情,Quarkus 会自动处理数据库设置,并提供应用程序和数据库之间的 wiring。
如果您提供用户凭证,则底层数据库将配置为使用它们。如果要使用外部工具连接到数据库,这非常有用。
要使用此功能,请确保安装了 Docker 或 Podman 容器运行时,具体取决于数据库类型。某些数据库,如 H2,在内存模式下操作,不需要容器运行时。
使用 %prod.
为 prod 模式提供实际连接详情,以确保它们不会以 dev 模式应用。如需更多信息,请参阅"配置参考"指南中的配置集部分。https://quarkus.io/version/3.8/guides/config-reference#profiles
有关 Dev 服务的更多信息,请参阅 Dev 服务概述。
如需了解更多详细信息和可选配置,请参阅数据库 Dev 服务。
1.1.2. 配置 JDBC 数据源
为您选择的数据库添加正确的 JDBC 扩展。
-
quarkus-jdbc-db2
-
quarkus-jdbc-derby
-
quarkus-jdbc-h2
-
quarkus-jdbc-mariadb
-
quarkus-jdbc-mssql
-
quarkus-jdbc-mysql
-
quarkus-jdbc-oracle
-
quarkus-jdbc-postgresql
-
配置 JDBC 数据源:
quarkus.datasource.db-kind=postgresql 1 quarkus.datasource.username=<your username> quarkus.datasource.password=<your password> quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/hibernate_orm_test quarkus.datasource.jdbc.max-size=16
- 1
- 只有在 classpath 上有多个数据库扩展时才需要此配置值。
如果只有一个可行的扩展可用,则 Quarkus 会假定这是正确的扩展。当您向测试范围中添加驱动程序时,Quarkus 会自动在测试中包含指定的驱动程序。
1.1.2.1. JDBC 连接池大小调整
为了保护您的数据库在负载高峰期间被过载,请适当调整池的大小,以节流数据库负载。最佳池大小取决于许多因素,如并行应用程序用户的数量或工作负载的性质。
请注意,设置池大小太大可能会导致一些请求在等待连接时超时。
有关池大小调整属性的更多信息,请参阅 JDBC 配置参考部分。
1.1.3. 配置被动数据源
为您选择的数据库添加正确的被动扩展。
-
quarkus-reactive-db2-client
-
quarkus-reactive-mssql-client
-
quarkus-reactive-mysql-client
-
quarkus-reactive-oracle-client
-
quarkus-reactive-pg-client
-
配置被动数据源:
quarkus.datasource.db-kind=postgresql 1 quarkus.datasource.username=<your username> quarkus.datasource.password=<your password> quarkus.datasource.reactive.url=postgresql:///your_database quarkus.datasource.reactive.max-size=20
- 1
- 只有在 classpath 中有多个 Reactive 驱动程序扩展时才需要此配置值。