/* * 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 org.hibernate.HibernateException; import org.hibernate.engine.spi.SharedSessionContractImplementor; /** * 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 */ public static final String ENTITY_NAME = "entity_name"; /** * The configuration parameter holding the JPA entity name */ public static final String JPA_ENTITY_NAME = "jpa_entity_name"; /** * 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 */ public Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException; }