§配置 JDBC 连接池
Play JDBC 数据源由 HikariCP 管理。
§特殊 URL
Play 支持 MySQL 和 PostgreSQL 的特殊 URL 格式。
# To configure MySQL
db.default.url="mysql://user:password@localhost/database"
# To configure PostgreSQL
db.default.url="postgres://user:password@localhost/database"
可以指定数据库服务的非标准端口。
# To configure MySQL running in Docker
db.default.url="mysql://user:password@localhost:port/database"
# To configure PostgreSQL running in Docker
db.default.url="postgres://user:password@localhost:port/database"
§参考
除了传统的 driver
、url
、username
、password
配置属性外,它还支持额外的调整参数(如果需要)。Play JDBC reference.conf
中的 play.db.prototype
配置用作所有数据库连接配置的原型。所有可用配置选项的默认值可以在此处查看。
# Copyright (C) from 2022 The Play Framework Contributors <https://github.com/playframework>, 2011-2021 Lightbend Inc. <https://www.lightbend.com>
play {
modules {
enabled += "play.api.db.DBModule"
enabled += "play.api.db.HikariCPModule"
}
# Database configuration
db {
# The name of the configuration item from which to read database config.
# So, if set to db, means that db.default is where the configuration for the
# database named default is found.
config = "db"
# The name of the default database, used when no database name is explicitly
# specified.
default = "default"
# The default connection pool.
# Valid values are:
# - default - Use the default connection pool provided by the platform (HikariCP)
# - hikaricp - Use HikariCP
# - A FQCN to a class that implements play.api.db.ConnectionPool
pool = "default"
# The prototype for database configuration
prototype = {
# The connection pool for this database.
# Valid values are:
# - default - Delegate to play.db.pool
# - hikaricp - Use HikariCP
# - A FQCN to a class that implements play.api.db.ConnectionPool
pool = "default"
# The database driver
driver = null
# The database url
url = null
# The username
username = null
# The password
password = null
# If non null, binds the JNDI name to this data source to the given JNDI name.
jndiName = null
# If it should log sql statements
logSql = false
# HikariCP configuration options
hikaricp {
# The datasource class name, if not using a URL
dataSourceClassName = null
# Data source configuration options
dataSource {
}
# Whether autocommit should be used
autoCommit = true
# The connection timeout
connectionTimeout = 30 seconds
# The idle timeout
idleTimeout = 10 minutes
# If non null, controls how frequently HikariCP will attempt to keep a connection alive
keepaliveTime = null
# The max lifetime of a connection
maxLifetime = 30 minutes
# If non null, the query that should be used to test connections
connectionTestQuery = null
# If non null, sets the minimum number of idle connections to maintain.
minimumIdle = null
# The maximum number of connections to make.
maximumPoolSize = 10
# If non null, sets the name of the connection pool.
# Defaults to the database configuration item name.
# Primarily used for stats reporting.
poolName = null
# This property controls whether the pool will "fail fast" if the pool cannot be seeded with
# an initial connection successfully.
# 1. Any positive number is taken to be the number of milliseconds to attempt to acquire an initial connection;
# the application thread will be blocked during this period. If a connection cannot be acquired before this
# timeout occurs, an exception will be thrown. This timeout is applied after the connectionTimeout period.
# 2. If the value is zero (0), HikariCP will attempt to obtain and validate a connection. If a connection
# is obtained, but fails validation, an exception will be thrown and the pool not started. However, if
# a connection cannot be obtained, the pool will start, but later efforts to obtain a connection may fail.
# 3. A value less than zero will bypass any initial connection attempt, and the pool will start immediately
# while trying to obtain connections in the background. Consequently, later efforts to obtain a connection
# may fail.
initializationFailTimeout = -1
# Sets whether internal queries should be isolated
isolateInternalQueries = false
# Sets whether pool suspension is allowed. There is a performance impact to enabling it.
allowPoolSuspension = false
# Sets whether connections should be read only
readOnly = false
# Sets whether mbeans should be registered
registerMbeans = false
# If non null, sets the catalog that should be used on connections
catalog = null
# A SQL statement that will be executed after every new connection creation before adding it to the pool
connectionInitSql = null
# If non null, sets the transaction isolation level
transactionIsolation = null
# The user-supplied SQLExceptionOverride class name.
exceptionOverrideClassName = null
# The validation timeout to use
validationTimeout = 5 seconds
# If non null, sets the threshold for the amount of time that a connection has been out of the pool before it is
# considered to have leaked
leakDetectionThreshold = null
}
}
}
}
当您需要为连接池指定一些设置时,您可以覆盖原型设置。例如,要为 HikariCP 设置 maximumPoolSize
,您可以在 application.conf
文件中设置以下内容:
db.default.hikaricp.maximumPoolSize = 15
如果您需要为连接池中的连接指定一些特定于驱动程序的属性,您可以在 dataSource
配置中设置它们。例如,要使用 HikariCP 设置 jdbc SQLServerDriver 的 queryTimeout
,您可以在 application.conf
文件中设置以下内容:
db.default.hikaricp.dataSource.queryTimeout = 15
下一步:配置 Play 的线程池
在本文档中发现错误?此页面的源代码可以在 此处 找到。在阅读 文档指南 后,请随时贡献拉取请求。有疑问或建议要分享?转到 我们的社区论坛 与社区开始对话。