Interface ImplicitNamingStrategy

All Known Implementing Classes:
ImplicitNamingStrategyComponentPathImpl, ImplicitNamingStrategyJpaCompliantImpl, ImplicitNamingStrategyLegacyHbmImpl, ImplicitNamingStrategyLegacyJpaImpl

@Incubating public interface ImplicitNamingStrategy
A set of rules for determining the logical name of a mapped relational database object when the mapping for an element of the Java domain model is not explicitly specified, neither in annotations of the Java code, nor in an XML-based mapping document.

For example, if a Java class annotated @Entity has no @Table annotation, then determinePrimaryTableName is called with an ImplicitEntityNameSource providing access to information about the Java class and its entity name.

On the other hand, when a logical name is explicitly specified, for example, using @Table to specify the table name, or @Column to specify a column name, the ImplicitNamingStrategy is not called and has no opportunity to intervene in the determination of the logical name.

However, a further level of processing is applied to the resulting logical names by a PhysicalNamingStrategy in order to determine the "finally final" physical names in the relational database schema.

Whenever reasonable, the use of a custom ImplicitNamingStrategy is highly recommended in preference to tedious and repetitive explicit table and column name mappings. It's anticipated that most projects using Hibernate will feature a custom implementation of ImplicitNamingStrategy.

An ImplicitNamingStrategy may be selected using the configuration property "hibernate.implicit_naming_strategy".

See Also:
API Note:
The method names here mostly favor the JPA terminology, for example, "secondary table" rather than "join".
  • Method Details

    • determinePrimaryTableName

      Identifier determinePrimaryTableName(ImplicitEntityNameSource source)
      Determine the implicit name of an entity's primary table.
      Parameters:
      source - The source information
      Returns:
      The implicit table name.
    • determineJoinTableName

      Identifier determineJoinTableName(ImplicitJoinTableNameSource source)
      Determine the name of an association join table given the source naming information, when a name is not explicitly given. This method is called for any sort of association with a join table, no matter what the logical cardinality.
      Parameters:
      source - The source information
      Returns:
      The implicit table name.
    • determineCollectionTableName

      Identifier determineCollectionTableName(ImplicitCollectionTableNameSource source)
      Determine the name of a collection join table given the source naming information, when a name is not explicitly given. This method is called only for collections of basic or embeddable values, and never for associations.
      Parameters:
      source - The source information
      Returns:
      The implicit table name.
    • determineDiscriminatorColumnName

      Identifier determineDiscriminatorColumnName(ImplicitDiscriminatorColumnNameSource source)
      Determine the discriminator column name for the given entity when it is not explicitly specified using DiscriminatorColumn.name().
      Parameters:
      source - The source information
      Returns:
      The implicit discriminator column name
    • determineTenantIdColumnName

      Identifier determineTenantIdColumnName(ImplicitTenantIdColumnNameSource source)
      Determine the implicit name of the tenant identifier column belonging to a given entity when it is not explicitly specified using Column.name().
      Parameters:
      source - The source information
      Returns:
      The determined tenant identifier column name
    • determineIdentifierColumnName

      Identifier determineIdentifierColumnName(ImplicitIdentifierColumnNameSource source)
      Determine the name if the identifier column belonging to the given entity when it is not explicitly specified using Column.name().
      Parameters:
      source - The source information
      Returns:
      The determined identifier column name
    • determineBasicColumnName

      Identifier determineBasicColumnName(ImplicitBasicColumnNameSource source)
      Determine the column name when it is not explicitly specified using Column.name().
      Parameters:
      source - The source information
      Returns:
      The implicit column name.
    • determineJoinColumnName

      Identifier determineJoinColumnName(ImplicitJoinColumnNameSource source)
      Determine the join column name when it is not explicitly specified using JoinColumn.name().

      In hbm.xml terms, this would be a <key/> defined for a collection or the column associated with a many-to-one.

      Parameters:
      source - The source information
      Returns:
      The determined join column name
    • determinePrimaryKeyJoinColumnName

      Identifier determinePrimaryKeyJoinColumnName(ImplicitPrimaryKeyJoinColumnNameSource source)
      Determine the primary key join column name when it is not explicitly specified using PrimaryKeyJoinColumn.name().

      In hbm.xml terms, this would be a <key/> defined for a <join/> or a <joined-subclass/>.

      Parameters:
      source - The source information
      Returns:
      The determined column name
    • determineAnyDiscriminatorColumnName

      Identifier determineAnyDiscriminatorColumnName(ImplicitAnyDiscriminatorColumnNameSource source)
      Determine the column name related to the discriminator portion of an Any mapping when no explicit column name is given using Column.name().
      Parameters:
      source - The source information
      Returns:
      The determined column name
    • determineAnyKeyColumnName

      Identifier determineAnyKeyColumnName(ImplicitAnyKeyColumnNameSource source)
      Determine the join column name related to the key/id portion of an Any mapping when no explicit join column name is given using JoinColumn.name().
      Parameters:
      source - The source information
      Returns:
      The determined identifier column name
    • determineMapKeyColumnName

      Identifier determineMapKeyColumnName(ImplicitMapKeyColumnNameSource source)
      Determine the map key column name when it is not explicitly specified using MapKeyColumn.name().
      Parameters:
      source - The source information
      Returns:
      The implicit column name.
    • determineListIndexColumnName

      Identifier determineListIndexColumnName(ImplicitIndexColumnNameSource source)
      Determine the list index column name when it is not explicitly specified using OrderColumn.name().
      Parameters:
      source - The source information
      Returns:
      The implicit column name.
    • determineForeignKeyName

      Identifier determineForeignKeyName(ImplicitForeignKeyNameSource source)
      Determine the foreign key name when it is not explicitly specified using ForeignKey.name().
      Parameters:
      source - The source information
      Returns:
      The determined foreign key name
    • determineUniqueKeyName

      Identifier determineUniqueKeyName(ImplicitUniqueKeyNameSource source)
      Determine the unique key name when it is not explicitly specified using UniqueConstraint.name().
      Parameters:
      source - The source information
      Returns:
      The determined foreign key name
    • determineIndexName

      Identifier determineIndexName(ImplicitIndexNameSource source)
      Determine the index name when it is not explicitly specified using Index.name().
      Parameters:
      source - The source information
      Returns:
      The determined foreign key name