org.springframework.jdbc.core.metadata

## Interface TableMetaDataProvider

- All Known Implementing Classes:
    DerbyTableMetaDataProvider, GenericTableMetaDataProvider, HsqlTableMetaDataProvider, OracleTableMetaDataProvider, PostgresTableMetaDataProvider

      public interface TableMetaDataProvider

  Interface specifying the API to be implemented by a class providing table metedata. This is intended for internal use by the Simple JDBC classes.
  Since:
    2.5
  Author:
    Thomas Risberg

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `catalogNameToUse(String catalogName)` Get the catalog name formatted based on metadata information.
    `String` | `getSimpleQueryForGetGeneratedKey(String tableName, String keyColumnName)` Get the simple query to retrieve a generated key
    `List<TableParameterMetaData>` | `getTableParameterMetaData()` Get the table parameter metadata that is currently used.
    `void` | `initializeWithMetaData(DatabaseMetaData databaseMetaData)` Initialize using the database metedata provided
    `void` | `initializeWithTableColumnMetaData(DatabaseMetaData databaseMetaData, String catalogName, String schemaName, String tableName)` Initialize using provided database metadata, table and column information.
    `boolean` | `isGeneratedKeysColumnNameArraySupported()` Does this database support a column name String array for retreiving generated keys `Connection.createStruct(String, Object[])`
    `boolean` | `isGetGeneratedKeysSimulated()` Does this database support a simple quey to retrieve the generated key whe the JDBC 3.0 feature of retreiving generated keys is not supported `DatabaseMetaData.supportsGetGeneratedKeys()`
    `boolean` | `isGetGeneratedKeysSupported()` Does this database support the JDBC 3.0 feature of retreiving generated keys `DatabaseMetaData.supportsGetGeneratedKeys()`
    `boolean` | `isTableColumnMetaDataUsed()` Are we using the meta data for the table columns?
    `String` | `metaDataCatalogNameToUse(String catalogName)` Provide any modification of the catalog name passed in to match the meta data currently used.
    `String` | `metaDataSchemaNameToUse(String schemaName)` Provide any modification of the schema name passed in to match the meta data currently used.
    `String` | `schemaNameToUse(String schemaName)` Get the schema name formatted based on metadata information.
    `void` | `setNativeJdbcExtractor(NativeJdbcExtractor nativeJdbcExtractor)` Set the `NativeJdbcExtractor` to use to retrieve the native connection if necessary
    `String` | `tableNameToUse(String tableName)` Get the table name formatted based on metadata information.

- - ### Method Detail

    - #### initializeWithMetaData

          void initializeWithMetaData(DatabaseMetaData databaseMetaData)
                                      throws SQLException

      Initialize using the database metedata provided
      Parameters:
        `databaseMetaData` -
      Throws:
        `SQLException`

    - #### initializeWithTableColumnMetaData

          void initializeWithTableColumnMetaData(DatabaseMetaData databaseMetaData,
                                               String catalogName,
                                               String schemaName,
                                               String tableName)
                                                 throws SQLException

      Initialize using provided database metadata, table and column information. This initalization can be turned off by specifying that column meta data should not be used.
      Parameters:
        `databaseMetaData` - used to retrieve database specific information
        `catalogName` - name of catalog to use or null
        `schemaName` - name of schema name to use or null
        `tableName` - name of the table
      Throws:
        `SQLException`

    - #### tableNameToUse

          String tableNameToUse(String tableName)

      Get the table name formatted based on metadata information. This could include altering the case.
      Parameters:
        `tableName` -
      Returns:
        table name formatted

    - #### catalogNameToUse

          String catalogNameToUse(String catalogName)

      Get the catalog name formatted based on metadata information. This could include altering the case.
      Parameters:
        `catalogName` -
      Returns:
        catalog name formatted

    - #### schemaNameToUse

          String schemaNameToUse(String schemaName)

      Get the schema name formatted based on metadata information. This could include altering the case.
      Parameters:
        `schemaName` -
      Returns:
        schema name formatted

    - #### metaDataCatalogNameToUse

          String metaDataCatalogNameToUse(String catalogName)

      Provide any modification of the catalog name passed in to match the meta data currently used. The returned value will be used for meta data lookups. This could include altering the case used or providing a base catalog if none is provided.
      Parameters:
        `catalogName` -
      Returns:
        catalog name to use

    - #### metaDataSchemaNameToUse

          String metaDataSchemaNameToUse(String schemaName)

      Provide any modification of the schema name passed in to match the meta data currently used. The returned value will be used for meta data lookups. This could include altering the case used or providing a base schema if none is provided.
      Parameters:
        `schemaName` -
      Returns:
        schema name to use

    - #### isTableColumnMetaDataUsed

          boolean isTableColumnMetaDataUsed()

      Are we using the meta data for the table columns?

    - #### isGetGeneratedKeysSupported

          boolean isGetGeneratedKeysSupported()

      Does this database support the JDBC 3.0 feature of retreiving generated keys `DatabaseMetaData.supportsGetGeneratedKeys()`

    - #### isGetGeneratedKeysSimulated

          boolean isGetGeneratedKeysSimulated()

      Does this database support a simple quey to retrieve the generated key whe the JDBC 3.0 feature of retreiving generated keys is not supported `DatabaseMetaData.supportsGetGeneratedKeys()`

    - #### getSimpleQueryForGetGeneratedKey

          String getSimpleQueryForGetGeneratedKey(String tableName,
                                                String keyColumnName)

      Get the simple query to retrieve a generated key

    - #### isGeneratedKeysColumnNameArraySupported

          boolean isGeneratedKeysColumnNameArraySupported()

      Does this database support a column name String array for retreiving generated keys `Connection.createStruct(String, Object[])`

    - #### getTableParameterMetaData

          List<TableParameterMetaData> getTableParameterMetaData()

      Get the table parameter metadata that is currently used.
      Returns:
        List of `TableParameterMetaData`

    - #### setNativeJdbcExtractor

          void setNativeJdbcExtractor(NativeJdbcExtractor nativeJdbcExtractor)

      Set the `NativeJdbcExtractor` to use to retrieve the native connection if necessary