FileDocCategorySizeDatePackage
Type.javaAPI DocHibernate 3.2.513553Wed Aug 10 00:06:40 BST 2005org.hibernate.type

Type

public interface Type implements Serializable
Defines a mapping from a Java type to an JDBC datatype. This interface is intended to be implemented by applications that need custom types.

Implementors should usually be immutable and must certainly be threadsafe.
author
Gavin King

Fields Summary
Constructors Summary
Methods Summary
public java.lang.Objectassemble(java.io.Serializable cached, org.hibernate.engine.SessionImplementor session, java.lang.Object owner)
Reconstruct the object from its cached "disassembled" state.

param
cached the disassembled state from the cache
param
session the session
param
owner the parent entity object
return
the the object

public voidbeforeAssemble(java.io.Serializable cached, org.hibernate.engine.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 intcompare(java.lang.Object x, java.lang.Object y, org.hibernate.EntityMode entityMode)
compare two instances of the type

param
entityMode

public java.lang.ObjectdeepCopy(java.lang.Object value, org.hibernate.EntityMode entityMode, org.hibernate.engine.SessionFactoryImplementor factory)
Return a deep copy of the persistent state, stopping at entities and at collections.

param
value generally a collection element or entity field
param
entityMode
param
factory
return
Object a copy

public java.io.Serializabledisassemble(java.lang.Object value, org.hibernate.engine.SessionImplementor session, java.lang.Object owner)
Return a cacheable "disassembled" representation of the object.

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

public java.lang.ObjectfromXMLNode(org.dom4j.Node xml, org.hibernate.engine.Mapping factory)
Parse the XML representation of an instance.

param
xml
param
factory
return
an instance of the type
throws
HibernateException

public intgetColumnSpan(org.hibernate.engine.Mapping mapping)
How many columns are used to persist this type.

public intgetHashCode(java.lang.Object x, org.hibernate.EntityMode entityMode)
Get a hashcode, consistent with persistence "equality"

param
x
param
entityMode

public intgetHashCode(java.lang.Object x, org.hibernate.EntityMode entityMode, org.hibernate.engine.SessionFactoryImplementor factory)
Get a hashcode, consistent with persistence "equality"

param
x
param
entityMode
param
factory

public java.lang.StringgetName()
Returns the abbreviated name of the type.

return
String the Hibernate type name

public java.lang.ClassgetReturnedClass()
The class returned by nullSafeGet() methods. This is used to establish the class of an array of this type.

return
Class

public org.hibernate.type.TypegetSemiResolvedType(org.hibernate.engine.SessionFactoryImplementor factory)
Get the type of a semi-resolved value.

public java.lang.Objecthydrate(java.sql.ResultSet rs, java.lang.String[] names, org.hibernate.engine.SessionImplementor session, java.lang.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().

see
Type#resolve(Object, SessionImplementor, Object)
param
rs
param
names the column names
param
session the session
param
owner the parent entity
return
Object an identifier or actual value
throws
HibernateException
throws
SQLException

public booleanisAnyType()
Is this an "any" type. i.e. a reference to a persistent entity that is not modelled as a (foreign key) association.

public booleanisAssociationType()
Return true if the implementation is castable to AssociationType. This does not necessarily imply that the type actually represents an association.

see
AssociationType
return
boolean

public booleanisCollectionType()
Is this type a collection type.

public booleanisComponentType()
Is this type a component type. If so, the implementation must be castable to AbstractComponentType. A component type may own collections or associations and hence must provide certain extra functionality.

see
AbstractComponentType
return
boolean

public booleanisDirty(java.lang.Object old, java.lang.Object current, org.hibernate.engine.SessionImplementor session)
Should the parent be considered dirty, given both the old and current field or element value?

param
old the old value
param
current the current value
param
session
return
true if the field is dirty

public booleanisDirty(java.lang.Object old, java.lang.Object current, boolean[] checkable, org.hibernate.engine.SessionImplementor session)
Should the parent be considered dirty, given both the old and current field or element value?

param
old the old value
param
current the current value
param
checkable which columns are actually updatable
param
session
return
true if the field is dirty

public booleanisEntityType()
Is this type an entity type?

return
boolean

public booleanisEqual(java.lang.Object x, java.lang.Object y, org.hibernate.EntityMode entityMode)
Compare two instances of the class mapped by this type for persistence "equality" - equality of persistent state.

param
x
param
y
param
entityMode
return
boolean
throws
HibernateException

public booleanisEqual(java.lang.Object x, java.lang.Object y, org.hibernate.EntityMode entityMode, org.hibernate.engine.SessionFactoryImplementor factory)
Compare two instances of the class mapped by this type for persistence "equality" - equality of persistent state.

param
x
param
y
param
entityMode
return
boolean
throws
HibernateException

public booleanisModified(java.lang.Object oldHydratedState, java.lang.Object currentState, boolean[] checkable, org.hibernate.engine.SessionImplementor session)
Has the parent object been modified, compared to the current database state?

param
oldHydratedState the database state, in a "hydrated" form, with identifiers unresolved
param
currentState the current state of the object
param
checkable which columns are actually updatable
param
session
return
true if the field has been modified

public booleanisMutable()
Are objects of this type mutable. (With respect to the referencing object ... entities and collections are considered immutable because they manage their own internal state.)

return
boolean

public booleanisSame(java.lang.Object x, java.lang.Object y, org.hibernate.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.

param
x
param
y
param
entityMode
return
boolean
throws
HibernateException

public booleanisXMLElement()

public java.lang.ObjectnullSafeGet(java.sql.ResultSet rs, java.lang.String[] names, org.hibernate.engine.SessionImplementor session, java.lang.Object owner)
Retrieve an instance of the mapped class from a JDBC resultset. Implementors should handle possibility of null values.

see
Type#hydrate(ResultSet, String[], SessionImplementor, Object) alternative, 2-phase property initialization
param
rs
param
names the column names
param
session
param
owner the parent entity
return
Object
throws
HibernateException
throws
SQLException

public java.lang.ObjectnullSafeGet(java.sql.ResultSet rs, java.lang.String name, org.hibernate.engine.SessionImplementor session, java.lang.Object owner)
Retrieve an instance of the mapped class from a JDBC resultset. Implementations should handle possibility of null values. This method might be called if the type is known to be a single-column type.

param
rs
param
name the column name
param
session
param
owner the parent entity
return
Object
throws
HibernateException
throws
SQLException

public voidnullSafeSet(java.sql.PreparedStatement st, java.lang.Object value, int index, boolean[] settable, org.hibernate.engine.SessionImplementor session)
Write an instance of the mapped class to a prepared statement, ignoring some columns. Implementors should handle possibility of null values. A multi-column type should be written to parameters starting from index.

param
st
param
value the object to write
param
index statement parameter index
param
settable an array indicating which columns to ignore
param
session
throws
HibernateException
throws
SQLException

public voidnullSafeSet(java.sql.PreparedStatement st, java.lang.Object value, int index, org.hibernate.engine.SessionImplementor session)
Write an instance of the mapped class to a prepared statement. Implementors should handle possibility of null values. A multi-column type should be written to parameters starting from index.

param
st
param
value the object to write
param
index statement parameter index
param
session
throws
HibernateException
throws
SQLException

public java.lang.Objectreplace(java.lang.Object original, java.lang.Object target, org.hibernate.engine.SessionImplementor session, java.lang.Object owner, java.util.Map copyCache)
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.

param
original the value from the detached entity being merged
param
target the value in the managed entity
return
the value to be merged

public java.lang.Objectreplace(java.lang.Object original, java.lang.Object target, org.hibernate.engine.SessionImplementor session, java.lang.Object owner, java.util.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.

param
original the value from the detached entity being merged
param
target the value in the managed entity
return
the value to be merged

public java.lang.Objectresolve(java.lang.Object value, org.hibernate.engine.SessionImplementor session, java.lang.Object owner)
Map identifiers to entities or collections. This is the second phase of 2-phase property initialization.

see
Type#hydrate(ResultSet, String[], SessionImplementor, Object)
param
value an identifier or value returned by hydrate()
param
owner the parent entity
param
session the session
return
the given value, or the value associated with the identifier
throws
HibernateException

public java.lang.ObjectsemiResolve(java.lang.Object value, org.hibernate.engine.SessionImplementor session, java.lang.Object owner)
Given a hydrated, but unresolved value, return a value that may be used to reconstruct property-ref associations.

public voidsetToXMLNode(org.dom4j.Node node, java.lang.Object value, org.hibernate.engine.SessionFactoryImplementor factory)
A representation of the value to be embedded in an XML element.

param
value
param
factory
return
String
throws
HibernateException

public int[]sqlTypes(org.hibernate.engine.Mapping mapping)
Return the SQL type codes for the columns mapped by this type. The codes are defined on java.sql.Types.

see
java.sql.Types
return
the typecodes
throws
MappingException

public boolean[]toColumnNullness(java.lang.Object value, org.hibernate.engine.Mapping mapping)
Given an instance of the type, return an array of boolean, indicating which mapped columns would be null.

param
value an instance of the type

public java.lang.StringtoLoggableString(java.lang.Object value, org.hibernate.engine.SessionFactoryImplementor factory)
A representation of the value to be embedded in a log file.

param
value
param
factory
return
String
throws
HibernateException