第 1 章 在红帽构建的 Quarkus 中配置数据源
使用统一配置模型为 Java 数据库连接(JDBC)和被动驱动程序定义数据源。
应用使用数据源访问关系数据库。Quarkus 提供了统一的配置模型,用于定义 Java 数据库连接(JDBC)和被动数据库驱动程序的数据源。
Quarkus 使用 Agroal 和 Vert.x 为 JDBC 和被动驱动程序提供高性能、可扩展的数据源连接池。quarkus-jdbc channel
和 quarkus-reactive PlacementBinding-client
扩展提供构建时间优化,并将配置的 datasources 与 Quarkus 功能(如安全、健康检查和指标)集成。
有关消耗和使用被动数据源的更多信息,请参阅 Quarkus 被动 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 模式应用。如需更多信息,请参阅"配置参考"指南中的 Profiles 部分。
有关 Dev 服务的更多信息,请参阅 Dev 服务概述。
如需了解更多详细信息和可选配置,请参阅 Dev Services for 数据库。
1.1.2. 配置 JDBC 数据源
为您选择的数据库添加正确的 JDBC 扩展。
-
quarkus-jdbc-db2
quarkus-jdbc-derby
注意Apache Derby 数据库在红帽构建的 Quarkus 3.15 中弃用,计划在以后的发行版本中删除。在当前发行生命周期中,红帽将继续对 Apache 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-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 驱动程序扩展时才需要此配置值。