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 meta-data. This is intended for internal use by the Simple JDBC classes.
  Since:
    2.5
  Author:
    Thomas Risberg

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `String` | `catalogNameToUse(String catalogName)` Get the catalog name formatted based on meta-data information.
    `String` | `getSimpleQueryForGetGeneratedKey(String tableName, String keyColumnName)` Get the simple query to retrieve a generated key.
    `List<TableParameterMetaData>` | `getTableParameterMetaData()` Get the table parameter meta-data that is currently used.
    `void` | `initializeWithMetaData(DatabaseMetaData databaseMetaData)` Initialize using the database meta-data provided.
    `void` | `initializeWithTableColumnMetaData(DatabaseMetaData databaseMetaData, String catalogName, String schemaName, String tableName)` Initialize using provided database meta-data, table and column information.
    `boolean` | `isGeneratedKeysColumnNameArraySupported()` Does this database support a column name String array for retrieving generated keys: `Connection.createStruct(String, Object[])`?
    `boolean` | `isGetGeneratedKeysSimulated()` Does this database support a simple query to retrieve the generated key when the JDBC 3.0 feature of retrieving generated keys is not supported?
    `boolean` | `isGetGeneratedKeysSupported()` Does this database support the JDBC 3.0 feature of retrieving 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 meta-data information.
    `String` | `tableNameToUse(String tableName)` Get the table name formatted based on meta-data information.

- - ### Method Detail

    - #### initializeWithMetaData

          void initializeWithMetaData(DatabaseMetaData databaseMetaData)
                               throws SQLException

      Initialize using the database meta-data provided.
      Parameters:
        `databaseMetaData` - used to retrieve database specific information
      Throws:
        `SQLException` - in case of initialization failure

    - #### initializeWithTableColumnMetaData

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

      Initialize using provided database meta-data, table and column information. This initialization 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` if none)
        `schemaName` - name of schema name to use (or `null` if none)
        `tableName` - name of the table
      Throws:
        `SQLException` - in case of initialization failure

    - #### tableNameToUse

          @Nullable
          String tableNameToUse(@Nullable
                                          String tableName)

      Get the table name formatted based on meta-data information. This could include altering the case.

    - #### catalogNameToUse

          @Nullable
          String catalogNameToUse(@Nullable
                                            String catalogName)

      Get the catalog name formatted based on meta-data information. This could include altering the case.

    - #### schemaNameToUse

          @Nullable
          String schemaNameToUse(@Nullable
                                           String schemaName)

      Get the schema name formatted based on meta-data information. This could include altering the case.

    - #### metaDataCatalogNameToUse

          @Nullable
          String metaDataCatalogNameToUse(@Nullable
                                                    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.

    - #### metaDataSchemaNameToUse

          @Nullable
          String metaDataSchemaNameToUse(@Nullable
                                                   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.

    - #### 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 retrieving generated keys: `DatabaseMetaData.supportsGetGeneratedKeys()`?

    - #### isGetGeneratedKeysSimulated

          boolean isGetGeneratedKeysSimulated()

      Does this database support a simple query to retrieve the generated key when the JDBC 3.0 feature of retrieving generated keys is not supported?
      See Also:
        `isGetGeneratedKeysSupported()`

    - #### getSimpleQueryForGetGeneratedKey

          @Nullable
          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 retrieving generated keys: `Connection.createStruct(String, Object[])`?

    - #### getTableParameterMetaData

          List<TableParameterMetaData> getTableParameterMetaData()

      Get the table parameter meta-data that is currently used.
      Returns:
        a List of `TableParameterMetaData`