Class BaseUserTypeSupport<T>
- java.lang.Object
-
- org.hibernate.usertype.BaseUserTypeSupport<T>
-
- All Implemented Interfaces:
UserType<T>
- Direct Known Subclasses:
UserTypeLegacyBridge
,UserTypeSupport
public abstract class BaseUserTypeSupport<T> extends Object implements UserType<T>
-
-
Constructor Summary
Constructors Constructor Description BaseUserTypeSupport()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description T
assemble(Serializable cached, Object owner)
Reconstruct a value from its destructured representation, during the process of reading the properties of an entity from the second-level cache.T
deepCopy(T value)
Return a clone of the given instance of the Java class mapped by this custom type.Serializable
disassemble(T value)
Transform the given value into a destructured representation, suitable for storage in the second-level cache.boolean
equals(T x, T y)
Compare two instances of the Java class mapped by this custom type for persistence "equality", that is, equality of their persistent state.int
getSqlType()
The JDBC/SQL type code for the database column mapped by this custom type.int
hashCode(T x)
Get a hash code for the given instance of the Java class mapped by this custom type, consistent with the definition of persistence "equality" for this custom type.boolean
isMutable()
Are instances of the Java class mapped by this custom type mutable or immutable?protected BasicJavaType<T>
javaType()
protected JdbcType
jdbcType()
T
nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner)
Read an instance of the Java class mapped by this custom type from the given JDBCResultSet
.void
nullSafeSet(PreparedStatement st, T value, int index, SharedSessionContractImplementor session)
Write an instance of the Java class mapped by this custom type to the given JDBCPreparedStatement
.protected abstract void
resolve(BiConsumer<BasicJavaType<T>,JdbcType> resolutionConsumer)
Class<T>
returnedClass()
The class returned bynullSafeGet()
.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.usertype.UserType
getDefaultSqlLength, getDefaultSqlPrecision, getDefaultSqlScale, getJdbcType, getValueConverter, replace
-
-
-
-
Method Detail
-
resolve
protected abstract void resolve(BiConsumer<BasicJavaType<T>,JdbcType> resolutionConsumer)
-
jdbcType
protected JdbcType jdbcType()
-
javaType
protected BasicJavaType<T> javaType()
-
getSqlType
public int getSqlType()
Description copied from interface:UserType
The JDBC/SQL type code for the database column mapped by this custom type.The type code is usually one of the standard type codes declared by
SqlTypes
, but it could be a database-specific code.- Specified by:
getSqlType
in interfaceUserType<T>
- See Also:
SqlTypes
-
returnedClass
public Class<T> returnedClass()
Description copied from interface:UserType
The class returned bynullSafeGet()
.- Specified by:
returnedClass
in interfaceUserType<T>
- Returns:
- Class
-
equals
public boolean equals(T x, T y) throws HibernateException
Description copied from interface:UserType
Compare two instances of the Java class mapped by this custom type for persistence "equality", that is, equality of their persistent state.- Specified by:
equals
in interfaceUserType<T>
- Throws:
HibernateException
-
hashCode
public int hashCode(T x) throws HibernateException
Description copied from interface:UserType
Get a hash code for the given instance of the Java class mapped by this custom type, consistent with the definition of persistence "equality" for this custom type.- Specified by:
hashCode
in interfaceUserType<T>
- Throws:
HibernateException
-
nullSafeGet
public T nullSafeGet(ResultSet rs, int position, SharedSessionContractImplementor session, Object owner) throws SQLException
Description copied from interface:UserType
Read an instance of the Java class mapped by this custom type from the given JDBCResultSet
. Implementors must handle null column values.- Specified by:
nullSafeGet
in interfaceUserType<T>
owner
- in Hibernate 6, this is always null- Throws:
SQLException
-
nullSafeSet
public void nullSafeSet(PreparedStatement st, T value, int index, SharedSessionContractImplementor session) throws SQLException
Description copied from interface:UserType
Write an instance of the Java class mapped by this custom type to the given JDBCPreparedStatement
. Implementors must handle null values of the Java class. A multi-column type should be written to parameters starting fromindex
.- Specified by:
nullSafeSet
in interfaceUserType<T>
- Throws:
SQLException
-
deepCopy
public T deepCopy(T value) throws HibernateException
Description copied from interface:UserType
Return a clone of the given instance of the Java class mapped by this custom type.- It's not necessary to clone immutable objects. If the Java class mapped by this custom type is an immutable class, this method may safely just return its argument.
- For mutable objects, it's necessary to deep copy persistent state, stopping at associations to other entities, and at persistent collections.
- If the argument is a reference to an entity, just return the argument.
- Finally, if the argument is null, just return null.
- Specified by:
deepCopy
in interfaceUserType<T>
- Parameters:
value
- the object to be cloned, which may be null- Returns:
- a clone
- Throws:
HibernateException
-
isMutable
public boolean isMutable()
Description copied from interface:UserType
Are instances of the Java class mapped by this custom type mutable or immutable?
-
disassemble
public Serializable disassemble(T value) throws HibernateException
Description copied from interface:UserType
Transform the given value into a destructured representation, suitable for storage in the second-level cache. This method is called only during the process of writing the properties of an entity to the second-level cache.If the value is mutable then, at the very least, this method should perform a deep copy. That may not be enough for some types, however. For example, associations must be cached as identifier values.
This is an optional operation, but, if left unimplemented, this type will not be cacheable in the second-level cache.
- Specified by:
disassemble
in interfaceUserType<T>
- Parameters:
value
- the object to be cached- Returns:
- a cacheable representation of the object
- Throws:
HibernateException
- See Also:
Cache
-
assemble
public T assemble(Serializable cached, Object owner) throws HibernateException
Description copied from interface:UserType
Reconstruct a value from its destructured representation, during the process of reading the properties of an entity from the second-level cache.If the value is mutable then, at the very least, this method should perform a deep copy. That may not be enough for some types, however. For example, associations must be cached as identifier values.
This is an optional operation, but, if left unimplemented, this type will not be cacheable in the second-level cache.
- Specified by:
assemble
in interfaceUserType<T>
- Parameters:
cached
- the object to be cachedowner
- the owner of the cached object- Returns:
- a reconstructed object from the cacheable representation
- Throws:
HibernateException
- See Also:
Cache
-
-