帆软使用的第三方框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

167 lines
5.8 KiB

/*
* 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 com.fr.third.org.hibernate.boot.model.naming;
/**
* Pluggable strategy for applying implicit naming rules when an
* explicit name is not given.
* <p/>
* NOTE: the method names here mostly favor the JPA naming (aka, secondary table rather than join)
* <p/>
* Methods fall into 2 main categories:<ul>
* <li>
* Table naming<ul>
* <li>
* Entity primary table - {@link #determinePrimaryTableName}. Used when the
* primary table for an entity is not explicitly named in the metadata. See
* {@link com.fr.third.javax.persistence.Table} for details.
* </li>
* <li>
* Join table - {@link #determineJoinTableName}. See {@link com.fr.third.javax.persistence.JoinTable}
* for details. Join table covers basically any entity association whether in the form
* of a collection of entities (one-to-many, many-to-many) or a singular entity association
* (many-to-one, and occasionally one-to-one).
* </li>
* <li>
* Collection table - {@link #determineCollectionTableName} - Collection table
* refers to any non-entity collection (basic, component/embeddable, any). See
* {@link com.fr.third.javax.persistence.CollectionTable} for details.
* </li>
* <li>
* <i>Notice that secondary tables are not mentioned, since they must always be explicitly named</i>
* </li>
* </ul>
* </li>
* <li>
* Column naming<ul>
*
* </ul>
* </li>
* </ul>
*
* @author Steve Ebersole
*/
public interface ImplicitNamingStrategy {
/**
* Determine the implicit name of an entity's primary table.
*
* @param source The source information
*
* @return The implicit table name.
*/
public Identifier determinePrimaryTableName(ImplicitEntityNameSource source);
/**
* Determine the name of an association join table given the source naming
* information, when a name is not explicitly given.
*
* @param source The source information
*
* @return The implicit table name.
*/
public Identifier determineJoinTableName(ImplicitJoinTableNameSource source);
/**
* Determine the name of an collection join table given the source naming
* information, when a name is not explicitly given.
*
* @param source The source information
*
* @return The implicit table name.
*/
public Identifier determineCollectionTableName(ImplicitCollectionTableNameSource source);
/**
* Determine the implicit name for the discriminator column for the given entity
*
* @param source The source information
*
* @return The implicit discriminator column name
*/
public Identifier determineDiscriminatorColumnName(ImplicitDiscriminatorColumnNameSource source);
/**
* Determine the implicit name for the tenant (multi-tenancy) identifier column for the given entity
*
* @param source The source information
*
* @return The determined tenant identifier column name
*/
public Identifier determineTenantIdColumnName(ImplicitTenantIdColumnNameSource source);
/**
* Determine the implicit name for the identifier column for the given entity
*
* @param source The source information
*
* @return The determined identifier column name
*/
public Identifier determineIdentifierColumnName(ImplicitIdentifierColumnNameSource source);
/**
* Determine the name of an attribute's column given the source naming
* information, when a name is not explicitly given.
*
* @param source The source information
*
* @return The implicit column name.
*/
public Identifier determineBasicColumnName(ImplicitBasicColumnNameSource source);
/**
* Determine the column name related to {@link com.fr.third.javax.persistence.JoinColumn}. In
* {@code hbm.xml} terms, this would be a {@code <key/>} defined for a collection
* or the column associated with a many-to-one.
*
* @param source The source information
*
* @return The determined join column name
*/
public Identifier determineJoinColumnName(ImplicitJoinColumnNameSource source);
/**
* Determine the column name related to {@link com.fr.third.javax.persistence.PrimaryKeyJoinColumn}. In
* {@code hbm.xml} terms, this would be a {@code <key/>} defined for a {@code <join/>}
* or a {@code <joined-subclass/>} (others?)
*
* @param source The source information
*
* @return The determined column name
*/
public Identifier determinePrimaryKeyJoinColumnName(ImplicitPrimaryKeyJoinColumnNameSource source);
/**
* Determine the column name related to the discriminator portion of an ANY mapping when
* no explicit column name is given.
*
* @param source The source information
*
* @return The determined column name
*/
Identifier determineAnyDiscriminatorColumnName(ImplicitAnyDiscriminatorColumnNameSource source);
/**
* Determine the column name related to the key/id portion of an ANY mapping when
* no explicit column name is given.
*
* @param source The source information
*
* @return The determined identifier column name
*/
Identifier determineAnyKeyColumnName(ImplicitAnyKeyColumnNameSource source);
Identifier determineMapKeyColumnName(ImplicitMapKeyColumnNameSource source);
Identifier determineListIndexColumnName(ImplicitIndexColumnNameSource source);
Identifier determineForeignKeyName(ImplicitForeignKeyNameSource source);
Identifier determineUniqueKeyName(ImplicitUniqueKeyNameSource source);
Identifier determineIndexName(ImplicitIndexNameSource source);
}