## org.springframework.orm.hibernate3.support
Class AbstractLobType

    java.lang.Object
      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