Package org.apache.cayenne.dba

## Interface PkGenerator

- All Known Implementing Classes:
    `DB2PkGenerator`, `DerbyPkGenerator`, `FrontBasePkGenerator`, `H2PkGenerator`, `IngresPkGenerator`, `JdbcPkGenerator`, `MySQLPkGenerator`, `OpenBasePkGenerator`, `OraclePkGenerator`, `PostgresPkGenerator`, `SQLServerPkGenerator`, `SybasePkGenerator`

      public interface PkGenerator

  Defines methods to support automatic primary key generation.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `createAutoPk​(DataNode node, List<DbEntity> dbEntities)` | Generates necessary database objects to provide automatic primary key support.
    `List<String>` | `createAutoPkStatements​(List<DbEntity> dbEntities)` | Returns a list of SQL strings needed to generates database objects to provide automatic primary support for the list of entities.
    `void` | `dropAutoPk​(DataNode node, List<DbEntity> dbEntities)` | Drops any common database objects associated with automatic primary key generation process.
    `List<String>` | `dropAutoPkStatements​(List<DbEntity> dbEntities)` | Returns SQL string needed to drop database objects associated with automatic primary key generation.
    `Object` | `generatePk​(DataNode dataNode, DbAttribute pk)` | Generates a unique and non-repeating primary key for specified PK attribute.
    `DbAdapter` | `getAdapter()` | Get an adapter associated with current PkGenerator
    `void` | `reset()` | Resets any cached primary keys forcing generator to go to the database next time id generation is requested.
    `void` | `setAdapter​(DbAdapter q)` | Install the adapter associated with current PkGenerator

- - ### Method Detail

    - #### createAutoPk

          void createAutoPk​(DataNode node,
                            List<DbEntity> dbEntities)
                     throws Exception

      Generates necessary database objects to provide automatic primary key support.
      Parameters:
        `node` - node that provides access to a DataSource.
        `dbEntities` - a list of entities that require primary key auto-generation support
      Throws:
        `Exception`

    - #### createAutoPkStatements

          List<String> createAutoPkStatements​(List<DbEntity> dbEntities)

      Returns a list of SQL strings needed to generates database objects to provide automatic primary support for the list of entities. No actual database operations are performed.

    - #### dropAutoPk

          void dropAutoPk​(DataNode node,
                          List<DbEntity> dbEntities)
                   throws Exception

      Drops any common database objects associated with automatic primary key generation process. This may be lookup tables, special stored procedures or sequences.
      Parameters:
        `node` - node that provides access to a DataSource.
        `dbEntities` - a list of entities whose primary key auto-generation support should be dropped.
      Throws:
        `Exception`

    - #### dropAutoPkStatements

          List<String> dropAutoPkStatements​(List<DbEntity> dbEntities)

      Returns SQL string needed to drop database objects associated with automatic primary key generation. No actual database operations are performed.

    - #### generatePk

          Object generatePk​(DataNode dataNode,
                            DbAttribute pk)
                     throws Exception

      Generates a unique and non-repeating primary key for specified PK attribute.
      Throws:
        `Exception`
      Since:
        3.0

    - #### setAdapter

          void setAdapter​(DbAdapter q)

      Install the adapter associated with current PkGenerator
      Since:
        4.1

    - #### getAdapter

          DbAdapter getAdapter()

      Get an adapter associated with current PkGenerator
      Since:
        4.1

    - #### reset

          void reset()

      Resets any cached primary keys forcing generator to go to the database next time id generation is requested. May not be applicable for all generator implementations.