Interface ImplicitNamingStrategy
- All Known Implementing Classes:
ImplicitNamingStrategyComponentPathImpl
,ImplicitNamingStrategyJpaCompliantImpl
,ImplicitNamingStrategyLegacyHbmImpl
,ImplicitNamingStrategyLegacyJpaImpl
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 Summary
Modifier and TypeMethodDescriptionDetermine the column name related to the discriminator portion of anAny
mapping when no explicit column name is given usingColumn.name()
.Determine the join column name related to the key/id portion of anAny
mapping when no explicit join column name is given usingJoinColumn.name()
.Determine the column name when it is not explicitly specified usingColumn.name()
.Determine the name of a collection join table given the source naming information, when a name is not explicitly given.Determine the discriminator column name for the given entity when it is not explicitly specified usingDiscriminatorColumn.name()
.Determine the foreign key name when it is not explicitly specified usingForeignKey.name()
.Determine the name if the identifier column belonging to the given entity when it is not explicitly specified usingColumn.name()
.Determine the index name when it is not explicitly specified usingIndex.name()
.Determine the join column name when it is not explicitly specified usingJoinColumn.name()
.Determine the name of an association join table given the source naming information, when a name is not explicitly given.Determine the list index column name when it is not explicitly specified usingOrderColumn.name()
.Determine the map key column name when it is not explicitly specified usingMapKeyColumn.name()
.Determine the primary key join column name when it is not explicitly specified usingPrimaryKeyJoinColumn.name()
.Determine the implicit name of an entity's primary table.Determine the implicit name of the tenant identifier column belonging to a given entity when it is not explicitly specified usingColumn.name()
.Determine the unique key name when it is not explicitly specified usingUniqueConstraint.name()
.
-
Method Details
-
determinePrimaryTableName
Determine the implicit name of an entity's primary table.- Parameters:
source
- The source information- Returns:
- The implicit table name.
-
determineJoinTableName
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
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
Determine the discriminator column name for the given entity when it is not explicitly specified usingDiscriminatorColumn.name()
.- Parameters:
source
- The source information- Returns:
- The implicit discriminator column name
-
determineTenantIdColumnName
Determine the implicit name of the tenant identifier column belonging to a given entity when it is not explicitly specified usingColumn.name()
.- Parameters:
source
- The source information- Returns:
- The determined tenant identifier column name
-
determineIdentifierColumnName
Determine the name if the identifier column belonging to the given entity when it is not explicitly specified usingColumn.name()
.- Parameters:
source
- The source information- Returns:
- The determined identifier column name
-
determineBasicColumnName
Determine the column name when it is not explicitly specified usingColumn.name()
.- Parameters:
source
- The source information- Returns:
- The implicit column name.
-
determineJoinColumnName
Determine the join column name when it is not explicitly specified usingJoinColumn.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
Determine the primary key join column name when it is not explicitly specified usingPrimaryKeyJoinColumn.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
Determine the column name related to the discriminator portion of anAny
mapping when no explicit column name is given usingColumn.name()
.- Parameters:
source
- The source information- Returns:
- The determined column name
-
determineAnyKeyColumnName
Determine the join column name related to the key/id portion of anAny
mapping when no explicit join column name is given usingJoinColumn.name()
.- Parameters:
source
- The source information- Returns:
- The determined identifier column name
-
determineMapKeyColumnName
Determine the map key column name when it is not explicitly specified usingMapKeyColumn.name()
.- Parameters:
source
- The source information- Returns:
- The implicit column name.
-
determineListIndexColumnName
Determine the list index column name when it is not explicitly specified usingOrderColumn.name()
.- Parameters:
source
- The source information- Returns:
- The implicit column name.
-
determineForeignKeyName
Determine the foreign key name when it is not explicitly specified usingForeignKey.name()
.- Parameters:
source
- The source information- Returns:
- The determined foreign key name
-
determineUniqueKeyName
Determine the unique key name when it is not explicitly specified usingUniqueConstraint.name()
.- Parameters:
source
- The source information- Returns:
- The determined foreign key name
-
determineIndexName
Determine the index name when it is not explicitly specified usingIndex.name()
.- Parameters:
source
- The source information- Returns:
- The determined foreign key name
-