org.hibernate.id.IdentifierGenerator.java Source code

Java tutorial

Introduction

Here is the source code for org.hibernate.id.IdentifierGenerator.java

Source

/*
 * 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 <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
     */
    String ENTITY_NAME = "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 {@link GeneratedValue#generator()} to  the
     * {@link IdentifierGenerator} as it is configured.
     */
    String GENERATOR_NAME = "GENERATOR_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
     */
    Serializable generate(SharedSessionContractImplementor session, Object object) throws HibernateException;

    /**
     * Check if JDBC batch inserts are supported.
     *
     * @return JDBC batch inserts are supported.
     */
    default boolean supportsJdbcBatchInserts() {
        return true;
    }
}