org.hibernate.id
Class TableGenerator

java.lang.Object
  extended by org.hibernate.engine.TransactionHelper
      extended by org.hibernate.id.TableGenerator
All Implemented Interfaces:
Configurable, IdentifierGenerator, PersistentIdentifierGenerator
Direct Known Subclasses:
TableHiLoGenerator

public class TableGenerator
extends TransactionHelper
implements PersistentIdentifierGenerator, Configurable

An IdentifierGenerator that uses a database table to store the last generated value. It is not intended that applications use this strategy directly. However, it may be used to build other (efficient) strategies. The returned type is any supported by IntegralDataTypeHolder

The value MUST be fetched in a separate transaction from that of the main session transaction so the generator must be able to obtain a new connection and commit it. Hence this implementation may only be used when Hibernate is fetching connections, not when the user is supplying connections.

Again, the return types supported here are any of the ones supported by IntegralDataTypeHolder. This is new as of 3.5. Prior to that this generator only returned Integer values.

Mapping parameters supported: table, column

Author:
Gavin King
See Also:
TableHiLoGenerator

Field Summary
static String COLUMN
          The column parameter
static String DEFAULT_COLUMN_NAME
          Default column name
static String DEFAULT_TABLE_NAME
          Default table name
static String TABLE
          The table parameter
 
Fields inherited from interface org.hibernate.id.PersistentIdentifierGenerator
CATALOG, IDENTIFIER_NORMALIZER, PK, SCHEMA, SQL_STATEMENT_LOGGER, TABLES
 
Fields inherited from interface org.hibernate.id.IdentifierGenerator
ENTITY_NAME
 
Constructor Summary
TableGenerator()
           
 
Method Summary
protected  IntegralDataTypeHolder buildHolder()
           
 void configure(Type type, Properties params, Dialect dialect)
          Configure this instance, given the value of parameters specified by the user as <param> elements.
 Serializable doWorkInCurrentTransaction(Connection conn, String sql)
          Get the next value.
 Serializable generate(SessionImplementor session, Object object)
          Generate a new identifier.
protected  IntegralDataTypeHolder generateHolder(SessionImplementor session)
           
 Object generatorKey()
          Return a key unique to the underlying database objects.
 String[] sqlCreateStrings(Dialect dialect)
          The SQL required to create the underlying database objects.
 String[] sqlDropStrings(Dialect dialect)
          The SQL required to remove the underlying database objects.
 
Methods inherited from class org.hibernate.engine.TransactionHelper
doWorkInNewTransaction
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

COLUMN

public static final String COLUMN
The column parameter

See Also:
Constant Field Values

DEFAULT_COLUMN_NAME

public static final String DEFAULT_COLUMN_NAME
Default column name

See Also:
Constant Field Values

TABLE

public static final String TABLE
The table parameter

See Also:
Constant Field Values

DEFAULT_TABLE_NAME

public static final String DEFAULT_TABLE_NAME
Default table name

See Also:
Constant Field Values
Constructor Detail

TableGenerator

public TableGenerator()
Method Detail

configure

public void configure(Type type,
                      Properties params,
                      Dialect dialect)
Description copied from interface: Configurable
Configure this instance, given the value of parameters specified by the user as <param> elements. This method is called just once, following instantiation.

Specified by:
configure in interface Configurable
params - param values, keyed by parameter name

generate

public Serializable generate(SessionImplementor session,
                             Object object)
Description copied from interface: IdentifierGenerator
Generate a new identifier.

Specified by:
generate in interface IdentifierGenerator
object - the entity or toplevel collection for which the id is being generated
Returns:
a new identifier

generateHolder

protected IntegralDataTypeHolder generateHolder(SessionImplementor session)

sqlCreateStrings

public String[] sqlCreateStrings(Dialect dialect)
                          throws HibernateException
Description copied from interface: PersistentIdentifierGenerator
The SQL required to create the underlying database objects.

Specified by:
sqlCreateStrings in interface PersistentIdentifierGenerator
Parameters:
dialect - The dialect against which to generate the create command(s)
Returns:
The create command(s)
Throws:
HibernateException - problem creating the create command(s)

sqlDropStrings

public String[] sqlDropStrings(Dialect dialect)
Description copied from interface: PersistentIdentifierGenerator
The SQL required to remove the underlying database objects.

Specified by:
sqlDropStrings in interface PersistentIdentifierGenerator
Parameters:
dialect - The dialect against which to generate the drop command(s)
Returns:
The drop command(s)

generatorKey

public Object generatorKey()
Description copied from interface: PersistentIdentifierGenerator
Return a key unique to the underlying database objects. Prevents us from trying to create/remove them multiple times.

Specified by:
generatorKey in interface PersistentIdentifierGenerator
Returns:
Object an identifying key for this generator

doWorkInCurrentTransaction

public Serializable doWorkInCurrentTransaction(Connection conn,
                                               String sql)
                                        throws SQLException
Get the next value.

Specified by:
doWorkInCurrentTransaction in class TransactionHelper
Parameters:
conn - The sql connection to use.
sql - n/a
Returns:
Prior to 3.5 this method returned an Integer. Since 3.5 it now returns a IntegralDataTypeHolder
Throws:
SQLException

buildHolder

protected IntegralDataTypeHolder buildHolder()


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.