Package org.firebirdsql.jaybird.props

## Interface DatabaseConnectionProperties

- All Superinterfaces:
    `AttachmentProperties`, `BaseProperties`
  All Known Subinterfaces:
    `FirebirdConnectionProperties`, `IConnectionProperties`
  All Known Implementing Classes:
    `AbstractConnectionPropertiesDataSource`, `FBAbstractCommonDataSource`, `FBConnectionPoolDataSource`, `FbConnectionProperties`, `FBConnectionProperties`, `FbImmutableConnectionProperties`, `FBManagedConnectionFactory`, `FBSimpleDataSource`, `FBXADataSource`

      public interface DatabaseConnectionProperties
      extends AttachmentProperties

  Properties for database connections.
  Since:
    5
  Author:
    Mark Rotteveel

- - ### Method Summary

    All Methods Instance Methods Default Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `default int` | `getBlobBufferSize()` |
    `default java.lang.String` | `getDatabaseName()` | Gets the database of the connection.
    `default java.lang.String` | `getDataTypeBind()` | Get the `dataTypeBind` configuration.
    `default java.lang.String` | `getDecfloatRound()` |
    `default java.lang.String` | `getDecfloatTraps()` |
    `default java.lang.String` | `getDefaultIsolation()` | Get the default transaction isolation level as string.
    `default int` | `getDefaultTransactionIsolation()` | Get the default transaction isolation level.
    `default java.lang.String` | `getGeneratedKeysEnabled()` | Get the `generatedKeysEnabled` configuration.
    `default int` | `getPageCacheSize()` | Get the page cache size.
    `default java.lang.String` | `getScrollableCursor()` |
    `default int` | `getServerBatchBufferSize()` |
    `default java.lang.String` | `getSessionTimeZone()` | Get the `sessionTimeZone`.
    `default int` | `getSqlDialect()` |
    `default java.lang.String` | `getTpbMapping()` | Get the used TPB mapping.
    `default boolean` | `isColumnLabelForName()` | Gets the current setting of `columnLabelForName`
    `default boolean` | `isDefaultResultSetHoldable()` | Get whether ResultSets are holdable by default.
    `default boolean` | `isIgnoreProcedureType()` | Get the value for `ignoreProcedureType`.
    `default boolean` | `isTimestampUsesLocalTimezone()` | Deprecated. This property has unclear semantics and will be removed in a future version (Jaybird 6 or later)
    `default boolean` | `isUseFirebirdAutocommit()` | Get whether to use Firebird autocommit (experimental).
    `default boolean` | `isUseServerBatch()` |
    `default boolean` | `isUseStreamBlobs()` |
    `default void` | `setBlobBufferSize​(int blobBufferSize)` |
    `default void` | `setColumnLabelForName​(boolean columnLabelForName)` | Set if `ResultSetMetaData.getColumnName(int)` returns the `columnLabel` instead of the `columnName`.
    `default void` | `setDatabaseName​(java.lang.String databaseName)` | Sets the database of the connection
    `default void` | `setDataTypeBind​(java.lang.String dataTypeBind)` | Sets the `dataTypeBind` configuration.
    `default void` | `setDecfloatRound​(java.lang.String decfloatRound)` | Sets the `DECFLOAT` rounding mode
    `default void` | `setDecfloatTraps​(java.lang.String decfloatTraps)` | Sets the `DECFLOAT` error traps.
    `default void` | `setDefaultIsolation​(java.lang.String isolation)` | Set the default transaction isolation level as string.
    `default void` | `setDefaultResultSetHoldable​(boolean defaultResultSetHoldable)` | Set if `ResultSet` should be `ResultSet.HOLD_CURSORS_OVER_COMMIT` by default.
    `default void` | `setDefaultTransactionIsolation​(int defaultIsolationLevel)` | Set the default transaction isolation level.
    `default void` | `setGeneratedKeysEnabled​(java.lang.String generatedKeysEnabled)` | Sets the `generatedKeysEnabled` configuration.
    `default void` | `setIgnoreProcedureType​(boolean ignoreProcedureType)` | Sets the value `ignoreProcedureType`.
    `default void` | `setPageCacheSize​(int pageCacheSize)` | Set the page cache size.
    `default void` | `setScrollableCursor​(java.lang.String scrollableCursor)` | Sets the type of scrollable cursor.
    `default void` | `setServerBatchBufferSize​(int serverBatchBufferSize)` | Sets the server batch buffer size (if server batch is supported and enabled).
    `default void` | `setSessionTimeZone​(java.lang.String sessionTimeZone)` | Sets the `sessionTimeZone`.
    `default void` | `setSqlDialect​(int sqlDialect)` |
    `default void` | `setTimestampUsesLocalTimezone​(boolean timestampUsesLocalTimezone)` | Deprecated. This property has unclear semantics and will be removed in a future version (Jaybird 6 or later)
    `default void` | `setTpbMapping​(java.lang.String tpbMapping)` | Set path to the properties file with the TPB mapping.
    `default void` | `setUseFirebirdAutocommit​(boolean useFirebirdAutocommit)` | Set whether to use Firebird autocommit (experimental).
    `default void` | `setUseServerBatch​(boolean useServerBatch)` | Sets whether to use server-side batch support, if available.
    `default void` | `setUseStreamBlobs​(boolean useStreamBlobs)` |

    - ### Methods inherited from interface org.firebirdsql.jaybird.props.AttachmentProperties

      `getAuthPlugins, getCharSet, getConnectTimeout, getDbCryptConfig, getEncoding, getPassword, getPortNumber, getProcessId, getProcessName, getRoleName, getServerName, getSocketBufferSize, getSoTimeout, getType, getUser, getWireCrypt, isWireCompression, setAuthPlugins, setCharSet, setConnectTimeout, setDbCryptConfig, setEncoding, setPassword, setPortNumber, setProcessId, setProcessName, setRoleName, setServerName, setSocketBufferSize, setSoTimeout, setType, setUser, setWireCompression, setWireCrypt`

    - ### Methods inherited from interface org.firebirdsql.jaybird.props.BaseProperties

      `connectionPropertyValues, getBooleanProperty, getBooleanProperty, getIntProperty, getIntProperty, getProperty, getProperty, setBooleanProperty, setIntProperty, setProperty`

- - ### Method Detail

    - #### getDatabaseName

          default java.lang.String getDatabaseName()

      Gets the database of the connection.
      Returns:
        database name
      See Also:
        `setDatabaseName(String)`

    - #### setDatabaseName

          default void setDatabaseName​(java.lang.String databaseName)

      Sets the database of the connection

      When `serverName` is `null`, the value is taken as the URL of the database, and exact interpretation depends on the protocol implementation (`type`). Basically, the URL would be the JDBC URL, but without the `jdbc:firebird[sql]:[subprotocol:]` prefix and without connection properties. Examples:

      - //localhost/employee — PURE_JAVA, OOREMOTE, NATIVE (for NATIVE, this format is parsed and transformed to the next example)
      - localhost:employee — NATIVE, PURE_JAVA, OOREMOTE
      - //localhost:3051/employee — PURE_JAVA, OOREMOTE, NATIVE (for NATIVE, this format is parsed and transformed to the next example)
      - localhost/3051:employee — NATIVE, PURE_JAVA, OOREMOTE
      - /path/to/your.fdb — NATIVE, EMBEDDED, PURE_JAVA, OOREMOTE (PURE_JAVA and OOREMOTE will use localhost as `serverName`, depending on the Firebird version and platform, NATIVE may use Firebird Embedded)
      - C:\path\to\your.fdb — NATIVE, EMBEDDED (protocols like PURE_JAVA may attempt to connect to a server called `C`, depending on the Firebird version and platform, NATIVE may use Firebird Embedded)
      - C:/path/to/your.fdb — NATIVE, EMBEDDED (protocols like PURE_JAVA may attempt to connect to a server called `C`, depending on the Firebird version and platform, NATIVE may use Firebird Embedded)
      - xnet://employee — NATIVE (EMBEDDED will behave as NATIVE, protocols like PURE_JAVA may attempt to connect to a server called `xnet`)
      - other Firebird `fbclient` connection URLs — NATIVE (EMBEDDED will behave as NATIVE, protocols like PURE_JAVA may interpret the protocol name as a host name
      - Custom `type` implementations may support other URL formats

      Some protocols, for example PURE_JAVA, when `serverName` is not set, but `databaseName` doesn't seem to contain a host name, may default to attempting to connect to localhost with `databaseName` as the database path or alias.

      When `serverName` is set, the value is taken as the database path or alias. Examples:

      - employee
      - /path/to/your.fdb
      - C:\path\to\your.fdb
      - C:/path/to/your.fdb
      - relative/path/to/your.fdb — not recommended
      Parameters:
        `databaseName` - database name

    - #### getSqlDialect

          default int getSqlDialect()

      Returns:
        SQL dialect of the client connection

    - #### setSqlDialect

          default void setSqlDialect​(int sqlDialect)

      Parameters:
        `sqlDialect` - SQL dialect of the client connection.

    - #### getPageCacheSize

          default int getPageCacheSize()

      Get the page cache size.

      A value of `0` indicates that the value is not set, and that the server default is used.

      This option is only relevant for Firebird implementations with per connection cache (eg Classic)

      NOTE: Implementer should take care to return `0` if the value hasn't been set yet.

      Returns:
        size of cache in pages for this connection, can be specified for Classic and SuperClassic instances, ignored for SuperServer as the cache is shared; 0 when not set

    - #### setPageCacheSize

          default void setPageCacheSize​(int pageCacheSize)

      Set the page cache size.

      A value of `0` indicates that the value is not set, and that the server default is used.

      This option is only relevant for Firebird implementations with per connection cache (eg Classic).

      Parameters:
        `pageCacheSize` - size of cache in pages for this connection, can be specified for Classic and SuperClassic instances ignored for SuperServer as the cache is shared.

    - #### getDataTypeBind

          default java.lang.String getDataTypeBind()

      Get the `dataTypeBind` configuration.
      Returns:
        configuration value for `dataTypeBind`, or `null` for driver default
      Since:
        4.0

    - #### setDataTypeBind

          default void setDataTypeBind​(java.lang.String dataTypeBind)

      Sets the `dataTypeBind` configuration.

      If the value is explicitly set to a non-null value and the connected server is Firebird 4 or higher, this will configure the data type binding with the specified values using `isc_dpb_set_bind`, which is equivalent to executing `SET BIND` statements with the values.

      See also Firebird documentation for `SET BIND`.

      Parameters:
        `dataTypeBind` - Firebird 4+ data type bind configuration, a semicolon-separated list of `<from-type> TO <to-type>`
      Since:
        4.0

    - #### getSessionTimeZone

          default java.lang.String getSessionTimeZone()

      Get the `sessionTimeZone`.
      Returns:
        value for `sessionTimeZone`, or `null` for driver default (JVM default time zone)
      Since:
        4.0

    - #### setSessionTimeZone

          default void setSessionTimeZone​(java.lang.String sessionTimeZone)

      Sets the `sessionTimeZone`.
      Parameters:
        `sessionTimeZone` - Firebird 4+ session time zone name (we strongly suggest to use Java compatible names only), use `"server"` to use server default time zone (note: conversion will use JVM default time zone)
      Since:
        4.0

    - #### getBlobBufferSize

          default int getBlobBufferSize()

      Returns:
        BLOB buffer size in bytes.

    - #### setBlobBufferSize

          default void setBlobBufferSize​(int blobBufferSize)

      Parameters:
        `blobBufferSize` - size of the BLOB buffer in bytes.

    - #### isUseStreamBlobs

          default boolean isUseStreamBlobs()

      Returns:
        `true` if stream blobs should be created, otherwise `false`.

    - #### setUseStreamBlobs

          default void setUseStreamBlobs​(boolean useStreamBlobs)

      Parameters:
        `useStreamBlobs` - `true` if stream blobs should be created, otherwise `false`.

    - #### isDefaultResultSetHoldable

          default boolean isDefaultResultSetHoldable()

      Get whether ResultSets are holdable by default.
      Returns:
        `true` ResultSets by default are `ResultSet.HOLD_CURSORS_OVER_COMMIT`, `false` (default), ResultSets are `ResultSet.CLOSE_CURSORS_AT_COMMIT`

    - #### setDefaultResultSetHoldable

          default void setDefaultResultSetHoldable​(boolean defaultResultSetHoldable)

      Set if `ResultSet` should be `ResultSet.HOLD_CURSORS_OVER_COMMIT` by default.
      Parameters:
        `defaultResultSetHoldable` - `true` ResultSets are holdable, `false` (default) ResultSets are `ResultSet.CLOSE_CURSORS_AT_COMMIT`

    - #### isUseFirebirdAutocommit

          default boolean isUseFirebirdAutocommit()

      Get whether to use Firebird autocommit (experimental).
      Returns:
        `true` use Firebird autocommit
      Since:
        2.2.9

    - #### setUseFirebirdAutocommit

          default void setUseFirebirdAutocommit​(boolean useFirebirdAutocommit)

      Set whether to use Firebird autocommit (experimental).
      Parameters:
        `useFirebirdAutocommit` - `true` Use Firebird autocommit
      Since:
        2.2.9

    - #### isColumnLabelForName

          default boolean isColumnLabelForName()

      Gets the current setting of `columnLabelForName`
      Returns:
        `false` JDBC compliant behavior (`columnName` is returned), `true` compatibility option (`columnLabel` is returned)
      Since:
        2.2.1
      See Also:
        `setColumnLabelForName(boolean)`

    - #### setColumnLabelForName

          default void setColumnLabelForName​(boolean columnLabelForName)

      Set if `ResultSetMetaData.getColumnName(int)` returns the `columnLabel` instead of the `columnName`.

      The default behaviour (with `columnLabelForName=false` is JDBC-compliant. The behavior for value `true` is to provide compatibility with tools with a wrong expectation.

      Parameters:
        `columnLabelForName` - `false` JDBC compliant behavior (`columnName` is returned), `true` compatibility option (`columnLabel` is returned)
      Since:
        2.2.1

    - #### getGeneratedKeysEnabled

          default java.lang.String getGeneratedKeysEnabled()

      Get the `generatedKeysEnabled` configuration.
      Returns:
        configuration value for `generatedKeysEnabled`, or `null` for driver default
      Since:
        4.0

    - #### setGeneratedKeysEnabled

          default void setGeneratedKeysEnabled​(java.lang.String generatedKeysEnabled)

      Sets the `generatedKeysEnabled` configuration.
      Parameters:
        `generatedKeysEnabled` - Generated keys support configuration: `default` (or null/empty), `disabled`, `ignored`, or a list of statement types to enable (possible values: `insert`, `update`, `delete`, `update_or_insert`, `merge`)
      Since:
        4.0

    - #### isIgnoreProcedureType

          default boolean isIgnoreProcedureType()

      Get the value for `ignoreProcedureType`.
      Returns:
        value for `ignoreProcedureType`
      Since:
        3.0.6

    - #### setIgnoreProcedureType

          default void setIgnoreProcedureType​(boolean ignoreProcedureType)

      Sets the value `ignoreProcedureType`.

      When set to true, the `CallableStatement` implementation in Jaybird will ignore metadata information about the stored procedure type and default to using `EXECUTE PROCEDURE`, unless the type is explicitly set using `FirebirdCallableStatement.setSelectableProcedure(boolean)`. This can be useful in situations where a stored procedure is selectable, but tooling or code expects an executable stored procedure.

      Parameters:
        `ignoreProcedureType` - `true` Ignore procedure type
      Since:
        3.0.6

    - #### getDecfloatRound

          default java.lang.String getDecfloatRound()

      Returns:
        the server-side `DECFLOAT` rounding mode, `null` applies the Firebird server default

    - #### setDecfloatRound

          default void setDecfloatRound​(java.lang.String decfloatRound)

      Sets the `DECFLOAT` rounding mode
      Parameters:
        `decfloatRound` - Firebird 4+ server-side `DECFLOAT` rounding mode (`ceiling, up, half_up, half_even, half_down, down, floor, reround`); `null` to apply the Firebird server default (`half_up` in Firebird 4)

    - #### getDecfloatTraps

          default java.lang.String getDecfloatTraps()

      Returns:
        the server-side `DECFLOAT` error traps, `null` applies the Firebird server default

    - #### setDecfloatTraps

          default void setDecfloatTraps​(java.lang.String decfloatTraps)

      Sets the `DECFLOAT` error traps.
      Parameters:
        `decfloatTraps` - Firebird 4+ server-side `DECFLOAT` error traps; comma-separated list with options `Division_by_zero, Inexact, Invalid_operation, Overflow, Underflow`; `null` to apply Firebird server default (`Division_by_zero,Invalid_operation,Overflow` in Firebird 4)

    - #### getTpbMapping

          default java.lang.String getTpbMapping()

      Get the used TPB mapping.
      Returns:
        path to the TPB mapping
      See Also:
        `setTpbMapping(String)`

    - #### setTpbMapping

          default void setTpbMapping​(java.lang.String tpbMapping)

      Set path to the properties file with the TPB mapping. The path begins with the protocol specification followed by the path to the resource. A special protocol `"res:"` should be used to specify resource in the classpath.

      For compatibility reasons, if no protocol is specified, classpath is used by default.

      Properties file contains a mapping between the transaction isolation level (name of the constant in the `Connection` interface and a comma-separated list of TPB parameters).
      Parameters:
        `tpbMapping` - path to the properties file
      Throws:
        `java.lang.IllegalStateException` - May be thrown when the mapping has already been initialized (not all implementations do this)

    - #### getDefaultTransactionIsolation

          default int getDefaultTransactionIsolation()

      Get the default transaction isolation level. This is the transaction isolation level for the newly created connections.
      Returns:
        default transaction isolation level.

    - #### setDefaultTransactionIsolation

          default void setDefaultTransactionIsolation​(int defaultIsolationLevel)

      Set the default transaction isolation level.
      Parameters:
        `defaultIsolationLevel` - default transaction isolation level.

    - #### getDefaultIsolation

          default java.lang.String getDefaultIsolation()

      Get the default transaction isolation level as string. This method is complementary to `getDefaultTransactionIsolation()`, however it returns a string name instead of a numeric constant.
      Returns:
        default transaction isolation as string.
      See Also:
        `setDefaultIsolation(String)`

    - #### setDefaultIsolation

          default void setDefaultIsolation​(java.lang.String isolation)

      Set the default transaction isolation level as string. This method is complementary to `setDefaultTransactionIsolation(int)`, however it takes a string as parameter instead of a numeric constant.

      Following strings are allowed:

      - `"TRANSACTION_READ_COMMITTED"` for a READ COMMITTED isolation level.
      - `"TRANSACTION_REPEATABLE_READ"` for a REPEATABLE READ isolation level.
      - `"TRANSACTION_SERIALIZABLE"` for a SERIALIZABLE isolation level.
      - Integer string values matching the isolation levels
      Parameters:
        `isolation` - string constant representing a default isolation level.

    - #### isTimestampUsesLocalTimezone

          @Deprecated
          default boolean isTimestampUsesLocalTimezone()

      Deprecated.
      This property has unclear semantics and will be removed in a future version (Jaybird 6 or later)
      Returns:
        `true` if the Jaybird 1.0 handling of the calendar in corresponding setters. This is also compatible with MySQL calendar treatment.

    - #### setTimestampUsesLocalTimezone

          @Deprecated
          default void setTimestampUsesLocalTimezone​(boolean timestampUsesLocalTimezone)

      Deprecated.
      This property has unclear semantics and will be removed in a future version (Jaybird 6 or later)
      Sets the value `timestampUsesLocalTimezone`.
      Parameters:
        `timestampUsesLocalTimezone` - `true` if the Jaybird 1.0 handling of the calendar in corresponding setters. This is also compatible with MySQL calendar treatment.

    - #### getScrollableCursor

          default java.lang.String getScrollableCursor()

      Returns:
        Configuration of scrollable cursors, either `EMULATED` (default) or `SERVER` (case-insensitive)
      See Also:
        `setScrollableCursor(String)`

    - #### setScrollableCursor

          default void setScrollableCursor​(java.lang.String scrollableCursor)

      Sets the type of scrollable cursor.

      Possible values are (case-insensitive):

      - `EMULATED` (default) - emulate scrollable cursors in memory by fetching all rows
      - `SERVER` - user server-side scrollable cursor (requires Firebird 5.0 and pure-java connection). Falls back to `EMULATED` behaviour when server-side support is not available, or when holdable cursors are requested
      Parameters:
        `scrollableCursor` - Scrollable cursor type, one of `EMULATED` or `SERVER` (case-insensitive)

    - #### isUseServerBatch

          default boolean isUseServerBatch()

      Returns:
        `true` (default) use server-side batch if supported by server, `false` always use emulated batch
      See Also:
        `setUseServerBatch(boolean)`

    - #### setUseServerBatch

          default void setUseServerBatch​(boolean useServerBatch)

      Sets whether to use server-side batch support, if available.

      Currently, server-side batch is only supported with Firebird 4.0 or higher, with a pure Java connection, using a `PreparedStatement`, but not a `CallableStatement`, and only when not requesting generated keys.

      The implementation will fall back to emulated batches if either the server version doesn't support batches, or if the statement cannot be executed using the server-side batch mechanism for other reasons (e.g. requesting generated keys).

      Parameters:
        `useServerBatch` - `true`, use server-side batch support if possible, `false` always use emulated batch

    - #### getServerBatchBufferSize

          default int getServerBatchBufferSize()

      Returns:
        batch buffer size in bytes, `< 0` to use server-side default (16MB as of Firebird 4.0), `0` (default) to use server-side maximum (256MB as of Firebird 4.0), values exceeding server-side maximum will set server-side maximum
      See Also:
        `setServerBatchBufferSize(int)`

    - #### setServerBatchBufferSize

          default void setServerBatchBufferSize​(int serverBatchBufferSize)

      Sets the server batch buffer size (if server batch is supported and enabled).
      Parameters:
        `serverBatchBufferSize` - server batch buffer size in bytes, use `< 0` to set server-side default (16MB as of Firebird 4.0), use `0` to use server-side maximum (256MB as of Firebird 4.0), values exceeding server-side maximum will set server-side maximum