§JDBC コネクションプールの設定

Play の JDBC データソースの管理には、HikariCP が使われています。

§特別な URL

Play は MySQLPostgreSQL 用に特別な URL 形式をサポートしています。

# MySQL を設定する
db.default.url="mysql://user:[email protected]/database"

# PostgreSQL を設定する
db.default.url="postgres://user:[email protected]/database"


# Docker で実行する MySQL を設定する
db.default.url="mysql://user:[email protected]:port/database"

# Docker で実行する PostgreSQL を設定する
db.default.url="postgres://user:[email protected]:port/database"


伝統的な driver, url, username, password 設定プロパティに加え、必要な場合は追加のチューニングパラメータも用意されています。Play JDBC の reference.conf にある play.db.prototype 設定は、すべてのデータベース接続設定のプロトタイプとして使用されます。利用できる全設定オプションのデフォルト値を以下に示します:

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
    #  - bonecp - Use BoneCP
    #  - 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
      #  - bonecp - Use BoneCP
      #  - 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

      # 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

        # 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. Primarily used for stats reporting.
        poolName = null

        # Sets whether or not construction of the pool should fail if the minimum number of connections
        # coludn't be created.
        initializationFailFast = true

        # 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 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

      # BoneCP configuration options
      bonecp {

        # Whether autocommit should be used
        autoCommit = true

        # If non null, the transaction isolation level to use.
        isolation = null

        # If non null, sets the catolog to use
        defaultCatalog = null

        # Whether the database should be treated as read only
        readOnly = false

        # Whether opened statements should be automatically closed
        closeOpenStatements = true

        # The pool partition count
        partitionCount = 1

        # The maximum number of connections per partition
        maxConnectionsPerPartition = 30

        # The minimum number of connections per partition
        minConnectionsPerPartition = 5

        # The increment to acquire connections in
        acquireIncrement = 1

        # The acquire retry attempts
        acquireRetryAttempts = 10

        # The delay to wait before retrying to acquire a connection
        acquireRetryDelay = 1 second

        # The connection timeout
        connectionTimeout = 1 second

        # The idle age to expire connections
        idleMaxAge = 10 minutes

        # The maximum a connection should live for
        maxConnectionAge = 1 hour

        # Whether JMX reporting should be disabled
        disableJMX = true

        # Whether statistics should be kept
        statisticsEnabled = false

        # How frequently idle connections should be tested
        idleConnectionTestPeriod = 1 minute

        # Disable connection tracking
        disableConnectionTracking = true

        # The time limit for executing queries. 0 means no time limit.
        queryExecuteTimeLimit = 0

        # Whether the connection should be reset when closed
        resetConnectionOnClose = false

        # Whether unresolved transations should be detected
        detectUnresolvedTransactions = false

        # An SQL statement to execute to test if a connection is ok after it is created.
        # Null turns this feature off.
        initSQL = null

        # An SQL statement to execute to test if a connection is ok before giving it out of the pool.
        # Null turns this feature off.
        connectionTestStatement = null

        # Whether SQL statements should be logged
        logStatements = false

  # Evolutions configuration
  evolutions {

    # Whether evolutions are enabled
    enabled = true

    # Whether evolution updates should be performed with autocommit or in a manually managed transaction
    autocommit = true

    # Whether locks should be used when apply evolutions.  If this is true, a locks table will be created, and will
    # be used to synchronise between multiple Play instances trying to apply evolutions.  Set this to true in a multi
    # node environment.
    useLocks = false

    # Whether evolutions should be automatically applied.  In prod mode, this will only apply ups, in dev mode, it will
    # cause both ups and downs to be automatically applied.
    autoApply = false

    # Whether downs should be automatically applied.  This must be used in combination with autoApply, and only applies
    # to prod mode.
    autoApplyDowns = false

    # Db specific configuration. Should be a map of db names to configuration in the same format as this.
    db {


Next: Play スレッドプールの設定

このドキュメントの翻訳は Play チームによってメンテナンスされているものではありません。 間違いを見つけた場合、このページのソースコードを ここ で確認することができます。 ドキュメントガイドライン を読んで、お気軽にプルリクエストを送ってください。