refresh jdoc for TC and TCA

This commit is contained in:
Gavin 2023-01-03 09:38:29 +01:00 committed by Gavin King
parent b47049f892
commit d285464302
2 changed files with 37 additions and 30 deletions

View File

@ -72,22 +72,25 @@ import jakarta.persistence.TemporalType;
import static org.hibernate.internal.CoreLogging.messageLogger; import static org.hibernate.internal.CoreLogging.messageLogger;
/** /**
* Defines a set of available {@link Type} instances as isolated from other configurations. * Each instance defines a set of {@linkplain Type types} available in a given
* The isolation is defined by each instance of a {@code TypeConfiguration}. * persistence unit, and isolates them from other configurations.
* <p> * <p>
* Note that each {@code Type} is inherently "scoped" to a {@code TypeConfiguration}. We only * Note that each instance of {@code Type} is inherently "scoped" to a
* ever access a {@code Type} via its {@code TypeConfiguration}, more specifically, via the * {@code TypeConfiguration}. We always obtain a reference to a {@code Type}
* {@code TypeConfiguration} in effect for the current persistence unit. * via the {@code TypeConfiguration} associated with the current persistence
* unit.
* <p> * <p>
* Even though each {@code Type} instance is scoped to a {@code TypeConfiguration}, a {@code Type} * On the other hand, a {@code Type} does not inherently have access to its
* does not inherently have access to its {@code TypeConfiguration}, mainly because {@code Type} * parent {@code TypeConfiguration} since extensions may contribute instances
* is an extension contract and so Hibernate does not have full control over every {@code Type} * of {@code Type}, via {@link org.hibernate.boot.model.TypeContributions},
* available in a {@code TypeConfiguration}. * for example, and the instantiation of such instances occurs outside the
* control of Hibernate.
* <p> * <p>
* However, a {@code Type} will often want access to the {@code TypeConfiguration}, which can be * In particular, a custom {@link org.hibernate.boot.model.TypeContributor}
* achieved by the {@code Type} simply implementing the {@link TypeConfigurationAware} interface. * may contribute types to a {@code TypeConfiguration}.
* <p> * <p>
* A {@code TypeConfiguration} may be configured by a {@link org.hibernate.boot.model.TypeContributor}. * If a {@code Type} requires access to the parent {@code TypeConfiguration},
* it should implement {@link TypeConfigurationAware}.
* *
* @author Steve Ebersole * @author Steve Ebersole
* *
@ -269,19 +272,21 @@ public class TypeConfiguration implements SessionFactoryObserver, Serializable {
/** /**
* Understands the following target type names for the {@code cast()} function: * Understands the following target type names for the {@code cast()} function:
* <ul> * <ul>
* <li>String * <li>{@code String}
* <li>Character * <li>{@code Character}
* <li>Byte, Integer, Long * <li>{@code Byte}, {@code Short}, {@code Integer}, {@code Long}
* <li>Float, Double * <li>{@code Float}, {@code Double}
* <li>Time, Date, Timestamp * <li>{@code Time}, {@code Date}, {@code Timestamp}
* <li>LocalDate, LocalTime, LocalDateTime * <li>{@code LocalDate}, {@code LocalTime}, {@code LocalDateTime}
* <li>BigInteger * <li>{@code BigInteger}
* <li>BigDecimal * <li>{@code BigDecimal}
* <li>Binary * <li>{@code Binary}
* <li>Boolean (fragile) * <li>{@code Boolean}
* (fragile, not aware of encoding to character via
* {@link org.hibernate.type.CharBooleanConverter})
* </ul> * </ul>
* <p> * <p>
* (The type names are not case-sensitive.) * The type names are not case-sensitive.
*/ */
public BasicValuedMapping resolveCastTargetType(String name) { public BasicValuedMapping resolveCastTargetType(String name) {
switch ( name.toLowerCase() ) { switch ( name.toLowerCase() ) {

View File

@ -7,14 +7,16 @@
package org.hibernate.type.spi; package org.hibernate.type.spi;
/** /**
* Optional contract for {@link org.hibernate.type.Type}s which would like to be part of the scoping * Optional contract for a {@link org.hibernate.type.Type} which is aware
* process of the {@link TypeConfiguration}, that is, to receive access to the {@code TypeConfiguration} * of its scoping to a {@link TypeConfiguration} and which receives access
* to which they are scoped. For additional information on {@code TypeConfiguration} scoping, see * to the {@code TypeConfiguration} to which it is scoped.
* {@link TypeConfiguration}.
* <p> * <p>
* Note that it is illegal for a Type to implement TypeConfigurationAware and at the same time * For additional information about scoping, see {@link TypeConfiguration}.
* be scoped to more than one TypeConfiguration. Hibernate will enforce this internally *
* which is why {@link #getTypeConfiguration()} is exposed here. * @apiNote A {@code Type} which implements {@code TypeConfigurationAware}
* may not be scoped to more than one {@code TypeConfiguration}.
* The method {@link #getTypeConfiguration()} allows this rule
* to be enforced.
* *
* @author Steve Ebersole * @author Steve Ebersole
*/ */