Open Source Repository

Home /hibernate/hibernate-3.2.4.ga | Repository Home



org/hibernate/persister/entity/Lockable.java
package org.hibernate.persister.entity;

/**
 * Contract for things that can be locked via a {@link org.hibernate.dialect.lock.LockingStrategy}.
 <p/>
 * Currently only the root table gets locked, except for the case of HQL and Criteria queries
 * against dialects which do not support either (1) FOR UPDATE OF or (2) support hint locking
 * (in which case *all* queried tables would be locked).
 *
 @author Steve Ebersole
 @since 3.2
 */
public interface Lockable extends EntityPersister {
  /**
   * Locks are always applied to the "root table".
   *
   @return The root table name
   */
  public String getRootTableName();

  /**
   * Get the SQL alias this persister would use for the root table
   * given the passed driving alias.
   *
   @param drivingAlias The driving alias; or the alias for the table
   * mapped by this persister in the hierarchy.
   @return The root table alias.
   */
  public String getRootTableAlias(String drivingAlias);

  /**
   * Get the names of columns on the root table used to persist the identifier.
   *
   @return The root table identifier column names.
   */
  public String[] getRootTableIdentifierColumnNames();

  /**
   * For versioned entities, get the name of the column (again, expected on the
   * root table) used to store the version values.
   *
   @return The version column name.
   */
  public String getVersionColumnName();
}