Package io.vertx.sqlclient

## Interface Pool

- All Superinterfaces:
    `SqlClient`
  All Known Subinterfaces:
    `JDBCPool`

      public interface Pool
      extends SqlClient

  A connection pool which reuses a number of SQL connections.
  Author:
    Julien Viet

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Future<SqlConnection>` | `getConnection()` | Get a connection from the pool.
    `static Pool` | `pool​(Vertx vertx, SqlConnectOptions database, PoolOptions options)` | Create a connection pool to the `database` with the given `options`.
    `static Pool` | `pool​(SqlConnectOptions connectOptions)` | Like `pool(SqlConnectOptions, PoolOptions)` with default options.
    `static Pool` | `pool​(SqlConnectOptions database, PoolOptions options)` | Like `pool(Vertx, SqlConnectOptions, PoolOptions)` with a Vert.x instance created automatically.
    `PreparedQuery<RowSet<Row>>` | `preparedQuery​(String sql)` | Create a prepared query, one of the `PreparedQuery.execute(io.vertx.sqlclient.Tuple)` or `PreparedQuery.executeBatch(java.util.List<io.vertx.sqlclient.Tuple>)` methods must be called to execute the query.
    `Query<RowSet<Row>>` | `query​(String sql)` | Create a query, the `Query.execute()` method must be called to execute the query.
    `int` | `size()` |
    `default <T> Future<T>` | `withConnection​(Function<SqlConnection,​Future<T>> function)` | Get a connection from the pool and execute the given `function`.
    `default <T> Future<T>` | `withTransaction​(TransactionPropagation txPropagation, Function<SqlConnection,​Future<T>> function)` | Like `withTransaction(Function)` but allows for setting the mode, defining how the acquired connection is managed during the execution of the function.
    `default <T> Future<T>` | `withTransaction​(Function<SqlConnection,​Future<T>> function)` | Execute the given `function` within a transaction.

    - ### Methods inherited from interface io.vertx.sqlclient.SqlClient

      `close, preparedQuery`

- - ### Method Detail

    - #### pool

          static Pool pool​(SqlConnectOptions connectOptions)

      Like `pool(SqlConnectOptions, PoolOptions)` with default options.

    - #### pool

          static Pool pool​(SqlConnectOptions database,
                           PoolOptions options)

      Like `pool(Vertx, SqlConnectOptions, PoolOptions)` with a Vert.x instance created automatically.

    - #### pool

          static Pool pool​(Vertx vertx,
                           SqlConnectOptions database,
                           PoolOptions options)

      Create a connection pool to the `database` with the given `options`.

      A `Driver` will be selected among the drivers found on the classpath returning `true` when `Driver.acceptsOptions(SqlConnectOptions)` applied to the first options of the list.

      Parameters:
        `vertx` - the Vertx instance to be used with the connection pool
        `database` - the options used to create the connection pool, such as database hostname
        `options` - the options for creating the pool
      Returns:
        the connection pool
      Throws:
        `ServiceConfigurationError` - if no compatible drivers are found, or if multiple compatible drivers are found

    - #### getConnection

          Future<SqlConnection> getConnection()

      Get a connection from the pool.
      Returns:
        a future notified with the `SqlConnection`

    - #### query

          Query<RowSet<Row>> query​(String sql)

      Create a query, the `Query.execute()` method must be called to execute the query. A connection is borrowed from the connection pool when the query is executed and then immediately returned to the pool after it completes.
      Specified by:
        `query` in interface `SqlClient`
      Returns:
        the query

    - #### preparedQuery

          PreparedQuery<RowSet<Row>> preparedQuery​(String sql)

      Create a prepared query, one of the `PreparedQuery.execute(io.vertx.sqlclient.Tuple)` or `PreparedQuery.executeBatch(java.util.List<io.vertx.sqlclient.Tuple>)` methods must be called to execute the query. A connection is borrowed from the connection pool when the query is executed and then immediately returned to the pool after it completes.
      Specified by:
        `preparedQuery` in interface `SqlClient`
      Returns:
        the prepared query

    - #### withTransaction

          default <T> Future<T> withTransaction​(Function<SqlConnection,​Future<T>> function)

      Execute the given `function` within a transaction.

      The `function` is passed a client executing all operations within a transaction. When the future returned by the function

      - succeeds the transaction commits
      - fails the transaction rollbacks

      The `handler` is given a success result when the function returns a succeeded futures and the transaction commits. Otherwise it is given a failure result.

      Parameters:
        `function` - the code to execute
      Returns:
        a future notified with the result

    - #### withTransaction

          default <T> Future<T> withTransaction​(TransactionPropagation txPropagation,
                                                Function<SqlConnection,​Future<T>> function)

      Like `withTransaction(Function)` but allows for setting the mode, defining how the acquired connection is managed during the execution of the function.

    - #### withConnection

          default <T> Future<T> withConnection​(Function<SqlConnection,​Future<T>> function)

      Get a connection from the pool and execute the given `function`.

      When the future returned by the `function` completes, the connection is returned to the pool.

      The `handler` is given a success result when the function returns a succeeded futures. Otherwise it is given a failure result.

      Parameters:
        `function` - the code to execute
      Returns:
        a future notified with the result

    - #### size

          int size()

      Returns:
        the current pool size approximation