public abstract class

AbstractType

extends Object
implements Type
java.lang.Object
   ↳ org.hibernate.type.AbstractType
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

Abstract superclass of the built in Type hierarchy.

Summary

Public Constructors
AbstractType()
Public Methods
Object assemble(Serializable cached, SessionImplementor session, Object owner)
Reconstruct the object from its cached "disassembled" state.
void beforeAssemble(Serializable cached, SessionImplementor session)
Called before assembling a query result set from the query cache, to allow batch fetching of entities missing from the second-level cache.
int compare(Object x, Object y, EntityMode entityMode)
Perform a Comparator style comparison between values
Serializable disassemble(Object value, SessionImplementor session, Object owner)
Return a cacheable "disassembled" representation of the object.
int getHashCode(Object x, EntityMode entityMode)
Get a hash code, consistent with persistence "equality".
int getHashCode(Object x, EntityMode entityMode, SessionFactoryImplementor factory)
Get a hash code, consistent with persistence "equality".
Type getSemiResolvedType(SessionFactoryImplementor factory)
Get the type of a semi-resolved value.
Object hydrate(ResultSet rs, String[] names, SessionImplementor session, Object owner)
Retrieve an instance of the mapped class, or the identifier of an entity or collection, from a JDBC resultset.
boolean isAnyType()
Return true if the implementation is castable to AnyType.
boolean isAssociationType()
Return true if the implementation is castable to AssociationType.
boolean isCollectionType()
Return true if the implementation is castable to CollectionType.
boolean isComponentType()
Return true if the implementation is castable to CompositeType.
boolean isDirty(Object old, Object current, SessionImplementor session)
Should the parent be considered dirty, given both the old and current value?
boolean isEntityType()
Return true if the implementation is castable to EntityType.
boolean isEqual(Object x, Object y, EntityMode entityMode)
Compare two instances of the class mapped by this type for persistence "equality" (equality of persistent state).
boolean isEqual(Object x, Object y, EntityMode entityMode, SessionFactoryImplementor factory)
Compare two instances of the class mapped by this type for persistence "equality" (equality of persistent state).
boolean isModified(Object old, Object current, boolean[] checkable, SessionImplementor session)
Has the value been modified compared to the current database state? The difference between this and the isDirty(Object, Object, boolean[], SessionImplementor) methods is that here we need to account for "partially" built values.
boolean isSame(Object x, Object y, EntityMode entityMode)
Compare two instances of the class mapped by this type for persistence "equality" (equality of persistent state) taking a shortcut for entity references.
boolean isXMLElement()
Object replace(Object original, Object target, SessionImplementor session, Object owner, Map copyCache, ForeignKeyDirection foreignKeyDirection)
During merge, replace the existing (target) value in the entity we are merging to with a new (original) value from the detached entity we are merging.
Object resolve(Object value, SessionImplementor session, Object owner)
Map identifiers to entities or collections.
Object semiResolve(Object value, SessionImplementor session, Object owner)
Given a hydrated, but unresolved value, return a value that may be used to reconstruct property-ref associations.
Protected Methods
static void replaceNode(Node container, Element value)
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.hibernate.type.Type

Public Constructors

public AbstractType ()

Public Methods

public Object assemble (Serializable cached, SessionImplementor session, Object owner)

Reconstruct the object from its cached "disassembled" state.

Parameters
cached the disassembled state from the cache
session the session
owner the parent entity object
Returns
  • the the object

public void beforeAssemble (Serializable cached, SessionImplementor session)

Called before assembling a query result set from the query cache, to allow batch fetching of entities missing from the second-level cache.

public int compare (Object x, Object y, EntityMode entityMode)

Perform a Comparator style comparison between values

Parameters
x The first value
y The second value
entityMode The entity mode of the values.
Returns

public Serializable disassemble (Object value, SessionImplementor session, Object owner)

Return a cacheable "disassembled" representation of the object.

Parameters
value the value to cache
session the session
owner optional parent entity object (needed for collections)
Returns
  • the disassembled, deep cloned state

public int getHashCode (Object x, EntityMode entityMode)

Get a hash code, consistent with persistence "equality". Again for most types the normal usage is to delegate to the value's #hashCode.

Parameters
x The value for which to retrieve a hash code
entityMode The entity mode of the value.
Returns
  • The hash code

public int getHashCode (Object x, EntityMode entityMode, SessionFactoryImplementor factory)

Get a hash code, consistent with persistence "equality". Again for most types the normal usage is to delegate to the value's #hashCode.

Parameters
x The value for which to retrieve a hash code
entityMode The entity mode of the value.
factory The session factory
Returns
  • The hash code

public Type getSemiResolvedType (SessionFactoryImplementor factory)

Get the type of a semi-resolved value.

public Object hydrate (ResultSet rs, String[] names, SessionImplementor session, Object owner)

Retrieve an instance of the mapped class, or the identifier of an entity or collection, from a JDBC resultset. This is useful for 2-phase property initialization - the second phase is a call to resolveIdentifier().

Parameters
names the column names
session the session
owner the parent entity
Returns
  • Object an identifier or actual value

public boolean isAnyType ()

Return true if the implementation is castable to AnyType. Essentially a polymorphic version of (type instanceof AnyType.class).

An AnyType is additionally an AssociationType; so if this method returns true, isAssociationType() should also return true.

Returns
  • True if this type is also an AnyType implementor; false otherwise.

public boolean isAssociationType ()

Return true if the implementation is castable to AssociationType. This does not necessarily imply that the type actually represents an association. Essentially a polymorphic version of (type instanceof AssociationType.class)

Returns
  • True if this type is also an AssociationType implementor; false otherwise.

public boolean isCollectionType ()

Return true if the implementation is castable to CollectionType. Essentially a polymorphic version of (type instanceof CollectionType.class)

A CollectionType is additionally an AssociationType; so if this method returns true, isAssociationType() should also return true.

Returns
  • True if this type is also an CollectionType implementor; false otherwise.

public boolean isComponentType ()

Return true if the implementation is castable to CompositeType. Essentially a polymorphic version of (type instanceof CompositeType.class). A component type may own collections or associations and hence must provide certain extra functionality.

Returns
  • True if this type is also an CompositeType implementor; false otherwise.

public boolean isDirty (Object old, Object current, SessionImplementor session)

Should the parent be considered dirty, given both the old and current value?

Parameters
old the old value
current the current value
session The session from which the request originated.
Returns
  • true if the field is dirty

public boolean isEntityType ()

Return true if the implementation is castable to EntityType. Essentially a polymorphic version of (type instanceof EntityType.class).

An EntityType is additionally an AssociationType; so if this method returns true, isAssociationType() should also return true.

Returns
  • True if this type is also an EntityType implementor; false otherwise.

public boolean isEqual (Object x, Object y, EntityMode entityMode)

Compare two instances of the class mapped by this type for persistence "equality" (equality of persistent state).

This should always equate to some form of comparison of the value's internal state. As an example, for something like a date the comparison should be based on its internal "time" state based on the specific portion it is meant to represent (timestamp, date, time).

Parameters
x The first value
y The second value
entityMode The entity mode of the values.
Returns
  • True if there are considered equal (see discussion above).

public boolean isEqual (Object x, Object y, EntityMode entityMode, SessionFactoryImplementor factory)

Compare two instances of the class mapped by this type for persistence "equality" (equality of persistent state).

This should always equate to some form of comparison of the value's internal state. As an example, for something like a date the comparison should be based on its internal "time" state based on the specific portion it is meant to represent (timestamp, date, time).

Parameters
x The first value
y The second value
entityMode The entity mode of the values.
factory The session factory
Returns
  • True if there are considered equal (see discussion above).

public boolean isModified (Object old, Object current, boolean[] checkable, SessionImplementor session)

Has the value been modified compared to the current database state? The difference between this and the isDirty(Object, Object, boolean[], SessionImplementor) methods is that here we need to account for "partially" built values. This is really only an issue with association types. For most type implementations it is enough to simply delegate to isDirty(Object, Object, boolean[], SessionImplementor) here/

Parameters
old the database state, in a "hydrated" form, with identifiers unresolved
current the current state of the object
checkable which columns are actually updatable
session The session from which the request originated.
Returns
  • true if the field has been modified

public boolean isSame (Object x, Object y, EntityMode entityMode)

Compare two instances of the class mapped by this type for persistence "equality" (equality of persistent state) taking a shortcut for entity references.

For most types this should equate to #equals check on the values. For associations the implication is a bit different. For most types it is conceivable to simply delegate to isEqual(Object, Object, EntityMode)

Parameters
x The first value
y The second value
entityMode The entity mode of the values.
Returns
  • True if there are considered the same (see discussion above).

public boolean isXMLElement ()

public Object replace (Object original, Object target, SessionImplementor session, Object owner, Map copyCache, ForeignKeyDirection foreignKeyDirection)

During merge, replace the existing (target) value in the entity we are merging to with a new (original) value from the detached entity we are merging. For immutable objects, or null values, it is safe to simply return the first parameter. For mutable objects, it is safe to return a copy of the first parameter. For objects with component values, it might make sense to recursively replace component values.

Parameters
original the value from the detached entity being merged
target the value in the managed entity
Returns
  • the value to be merged

public Object resolve (Object value, SessionImplementor session, Object owner)

Map identifiers to entities or collections. This is the second phase of 2-phase property initialization.

Parameters
value an identifier or value returned by hydrate()
session the session
owner the parent entity
Returns
  • the given value, or the value associated with the identifier

public Object semiResolve (Object value, SessionImplementor session, Object owner)

Given a hydrated, but unresolved value, return a value that may be used to reconstruct property-ref associations.

Protected Methods

protected static void replaceNode (Node container, Element value)