org.springframework.orm.hibernate3.support
Class AbstractLobType

java.lang.Object
  extended by org.springframework.orm.hibernate3.support.AbstractLobType
All Implemented Interfaces:
org.hibernate.usertype.UserType
Direct Known Subclasses:
BlobByteArrayType, BlobSerializableType, BlobStringType, ClobStringType

public abstract class AbstractLobType
extends Object
implements org.hibernate.usertype.UserType

Abstract base class for Hibernate UserType implementations that map to LOBs. Retrieves the LobHandler to use from LocalSessionFactoryBean at config time.

For writing LOBs, either an active Spring transaction synchronization or an active JTA transaction (with "jtaTransactionManager" specified on LocalSessionFactoryBean or a Hibernate TransactionManagerLookup configured through the corresponding Hibernate property) is required.

Offers template methods for setting parameters and getting result values, passing in the LobHandler or LobCreator to use.

Since:
1.2
Author:
Juergen Hoeller
See Also:
LobHandler, LobCreator, LocalSessionFactoryBean.setLobHandler(org.springframework.jdbc.support.lob.LobHandler), LocalSessionFactoryBean.setJtaTransactionManager(javax.transaction.TransactionManager)

Field Summary
protected  Log logger
           
 
Constructor Summary
protected AbstractLobType()
          Constructor used by Hibernate: fetches config-time LobHandler and config-time JTA TransactionManager from LocalSessionFactoryBean.
protected AbstractLobType(LobHandler lobHandler, TransactionManager jtaTransactionManager)
          Constructor used for testing: takes an explicit LobHandler and an explicit JTA TransactionManager (can be null).
 
Method Summary
 Object assemble(Serializable cached, Object owner)
          This implementation returns the passed-in value as-is.
 Object deepCopy(Object value)
          This implementation returns the passed-in value as-is.
 Serializable disassemble(Object value)
          This implementation returns the passed-in value as-is.
 boolean equals(Object x, Object y)
          This implementation delegates to the Hibernate EqualsHelper.
 int hashCode(Object x)
          This implementation returns the hashCode of the given objectz.
 boolean isMutable()
          This implementation returns false.
 Object nullSafeGet(ResultSet rs, String[] names, Object owner)
          This implementation delegates to nullSafeGetInternal, passing in the LobHandler of this type.
protected abstract  Object nullSafeGetInternal(ResultSet rs, String[] names, Object owner, LobHandler lobHandler)
          Template method to extract a value from the given result set.
 void nullSafeSet(PreparedStatement st, Object value, int index)
          This implementation delegates to nullSafeSetInternal, passing in a transaction-synchronized LobCreator for the LobHandler of this type.
protected abstract  void nullSafeSetInternal(PreparedStatement ps, int index, Object value, LobCreator lobCreator)
          Template method to set the given parameter value on the given statement.
 Object replace(Object original, Object target, Object owner)
          This implementation returns the passed-in original as-is.
 
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
returnedClass, sqlTypes
 

Field Detail

logger

protected final Log logger
Constructor Detail

AbstractLobType

protected AbstractLobType()
Constructor used by Hibernate: fetches config-time LobHandler and config-time JTA TransactionManager from LocalSessionFactoryBean.

See Also:
LocalSessionFactoryBean.getConfigTimeLobHandler(), LocalSessionFactoryBean.getConfigTimeTransactionManager()

AbstractLobType

protected AbstractLobType(LobHandler lobHandler,
                          TransactionManager jtaTransactionManager)
Constructor used for testing: takes an explicit LobHandler and an explicit JTA TransactionManager (can be null).

Method Detail

isMutable

public boolean isMutable()
This implementation returns false.

Specified by:
isMutable in interface org.hibernate.usertype.UserType

equals

public boolean equals(Object x,
                      Object y)
               throws org.hibernate.HibernateException
This implementation delegates to the Hibernate EqualsHelper.

Specified by:
equals in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException
See Also:
EqualsHelper.equals(java.lang.Object, java.lang.Object)

hashCode

public int hashCode(Object x)
             throws org.hibernate.HibernateException
This implementation returns the hashCode of the given objectz.

Specified by:
hashCode in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException

deepCopy

public Object deepCopy(Object value)
                throws org.hibernate.HibernateException
This implementation returns the passed-in value as-is.

Specified by:
deepCopy in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException

disassemble

public Serializable disassemble(Object value)
                         throws org.hibernate.HibernateException
This implementation returns the passed-in value as-is.

Specified by:
disassemble in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException

assemble

public Object assemble(Serializable cached,
                       Object owner)
                throws org.hibernate.HibernateException
This implementation returns the passed-in value as-is.

Specified by:
assemble in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException

replace

public Object replace(Object original,
                      Object target,
                      Object owner)
               throws org.hibernate.HibernateException
This implementation returns the passed-in original as-is.

Specified by:
replace in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException

nullSafeGet

public final Object nullSafeGet(ResultSet rs,
                                String[] names,
                                Object owner)
                         throws org.hibernate.HibernateException,
                                SQLException
This implementation delegates to nullSafeGetInternal, passing in the LobHandler of this type.

Specified by:
nullSafeGet in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException
SQLException
See Also:
nullSafeGetInternal(java.sql.ResultSet, java.lang.String[], java.lang.Object, org.springframework.jdbc.support.lob.LobHandler)

nullSafeSet

public final void nullSafeSet(PreparedStatement st,
                              Object value,
                              int index)
                       throws org.hibernate.HibernateException,
                              SQLException
This implementation delegates to nullSafeSetInternal, passing in a transaction-synchronized LobCreator for the LobHandler of this type.

Specified by:
nullSafeSet in interface org.hibernate.usertype.UserType
Throws:
org.hibernate.HibernateException
SQLException
See Also:
nullSafeSetInternal(java.sql.PreparedStatement, int, java.lang.Object, org.springframework.jdbc.support.lob.LobCreator)

nullSafeGetInternal

protected abstract Object nullSafeGetInternal(ResultSet rs,
                                              String[] names,
                                              Object owner,
                                              LobHandler lobHandler)
                                       throws SQLException,
                                              IOException,
                                              org.hibernate.HibernateException
Template method to extract a value from the given result set.

Parameters:
rs - the ResultSet to extract from
names - the column names
owner - the containing entity
lobHandler - the LobHandler to use
Returns:
the extracted value
Throws:
SQLException - if thrown by JDBC methods
IOException - if thrown by streaming methods
org.hibernate.HibernateException - in case of any other exceptions

nullSafeSetInternal

protected abstract void nullSafeSetInternal(PreparedStatement ps,
                                            int index,
                                            Object value,
                                            LobCreator lobCreator)
                                     throws SQLException,
                                            IOException,
                                            org.hibernate.HibernateException
Template method to set the given parameter value on the given statement.

Parameters:
ps - the PreparedStatement to set on
index - the statement parameter index
value - the value to set
lobCreator - the LobCreator to use
Throws:
SQLException - if thrown by JDBC methods
IOException - if thrown by streaming methods
org.hibernate.HibernateException - in case of any other exceptions