/*
 * Hibernate, Relational Persistence for Idiomatic Java
 *
 * License: GNU Lesser General Public License (LGPL), version 2.1 or later.
 * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
 */
package org.hibernate.id;

import java.io.Serializable;

import javax.persistence.GeneratedValue;

import org.hibernate.HibernateException;
import org.hibernate.engine.spi.SharedSessionContractImplementor;

The general contract between a class that generates unique identifiers and the Session. It is not intended that this interface ever be exposed to the application. It is intended that users implement this interface to provide custom identifier generation strategies.

Implementors should provide a public default constructor.

Implementations that accept configuration parameters should also implement Configurable.
Implementors must be thread-safe
Author:Gavin King
See Also:
/** * The general contract between a class that generates unique * identifiers and the <tt>Session</tt>. It is not intended that * this interface ever be exposed to the application. It <b>is</b> * intended that users implement this interface to provide * custom identifier generation strategies.<br> * <br> * Implementors should provide a public default constructor.<br> * <br> * Implementations that accept configuration parameters should * also implement <tt>Configurable</tt>. * <br> * Implementors <em>must</em> be thread-safe * * @author Gavin King * * @see PersistentIdentifierGenerator * @see Configurable */
public interface IdentifierGenerator {
The configuration parameter holding the entity name
/** * The configuration parameter holding the entity name */
String ENTITY_NAME = "entity_name";
The configuration parameter holding the JPA entity name
/** * The configuration parameter holding the JPA entity name */
String JPA_ENTITY_NAME = "jpa_entity_name";
Used as a key to pass the name used as GeneratedValue.generator() to the IdentifierGenerator as it is configured.
/** * Used as a key to pass the name used as {@link GeneratedValue#generator()} to the * {@link IdentifierGenerator} as it is configured. */
String GENERATOR_NAME = "GENERATOR_NAME";
Generate a new identifier.
Params:
  • session – The session from which the request originates
  • object – the entity or collection (idbag) for which the id is being generated
Throws:
Returns:a new identifier
/** * Generate a new identifier. * * @param session The session from which the request originates * @param object the entity or collection (idbag) for which the id is being generated * * @return a new identifier * * @throws HibernateException Indicates trouble generating the identifier */
Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException; }