## org.hibernate.internal.util
Class SerializationHelper

    java.lang.Object
      org.hibernate.internal.util.SerializationHelper

    public final class SerializationHelper

extends Object

Assists with the serialization process and performs additional functionality based on serialization.

- Deep clone using serialization
- Serialize managing finally and IOException
- Deserialize managing finally and IOException

This class throws exceptions for invalid `null` inputs. Each method documents its behaviour in more detail.

Since:
  1.0

Method Summary
`static Object` `clone(Serializable object)` Deep clone an `Object` using serialization.
`static ClassLoader` `defaultClassLoader()` Returns the Thread Context ClassLoader (TCCL).
`static Object` `deserialize(byte[] objectData)` Deserializes an object from an array of bytes using the Thread Context ClassLoader (TCCL).
`static Object` `deserialize(byte[] objectData, ClassLoader loader)` Deserializes an object from an array of bytes.
`static Object` `deserialize(InputStream inputStream)` Deserializes an object from the specified stream using the Thread Context ClassLoader (TCCL).
`static Object` `deserialize(InputStream inputStream, ClassLoader loader)` Deserializes an object from the specified stream using the Thread Context ClassLoader (TCCL).
`static Object` `doDeserialize(InputStream inputStream, ClassLoader loader, ClassLoader fallbackLoader1, ClassLoader fallbackLoader2)`
`static ClassLoader` `hibernateClassLoader()`
`static byte[]` `serialize(Serializable obj)` Serializes an `Object` to a byte array for storage/serialization.
`static void` `serialize(Serializable obj, OutputStream outputStream)` Serializes an `Object` to the specified stream.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### clone

    public static Object clone(Serializable object)
                        throws SerializationException

  Deep clone an `Object` using serialization.

  This is many times slower than writing clone methods by hand on all objects in your object graph. However, for complex object graphs, or for those that don't support deep cloning this can be a simple alternative implementation. Of course all the objects must be `Serializable`.

  Parameters:
    `object` - the `Serializable` object to clone
  Returns:
    the cloned object
  Throws:
    `SerializationException` - (runtime) if the serialization fails

### serialize

    public static void serialize(Serializable obj,
                                 OutputStream outputStream)
                          throws SerializationException

  Serializes an `Object` to the specified stream.

  The stream will be closed once the object is written. This avoids the need for a finally clause, and maybe also exception handling, in the application code.

  The stream passed in is not buffered internally within this method. This is the responsibility of your application if desired.

  Parameters:
    `obj` - the object to serialize to bytes, may be null
    `outputStream` - the stream to write to, must not be null
  Throws:
    `IllegalArgumentException` - if `outputStream` is `null`
    `SerializationException` - (runtime) if the serialization fails

### serialize

    public static byte[] serialize(Serializable obj)
                            throws SerializationException

  Serializes an `Object` to a byte array for storage/serialization.

  Parameters:
    `obj` - the object to serialize to bytes
  Returns:
    a byte[] with the converted Serializable
  Throws:
    `SerializationException` - (runtime) if the serialization fails

### deserialize

    public static Object deserialize(InputStream inputStream)
                              throws SerializationException

  Deserializes an object from the specified stream using the Thread Context ClassLoader (TCCL).

  Delegates to `doDeserialize(java.io.InputStream, java.lang.ClassLoader, java.lang.ClassLoader, java.lang.ClassLoader)`

  Parameters:
    `inputStream` - the serialized object input stream, must not be null
  Returns:
    the deserialized object
  Throws:
    `IllegalArgumentException` - if `inputStream` is `null`
    `SerializationException` - (runtime) if the serialization fails

### defaultClassLoader

    public static ClassLoader defaultClassLoader()

  Returns the Thread Context ClassLoader (TCCL).

  Returns:
    The current TCCL

### hibernateClassLoader

    public static ClassLoader hibernateClassLoader()

### deserialize

    public static Object deserialize(InputStream inputStream,
                                     ClassLoader loader)
                              throws SerializationException

  Deserializes an object from the specified stream using the Thread Context ClassLoader (TCCL). If there is no TCCL set, the classloader of the calling class is used.

  The stream will be closed once the object is read. This avoids the need for a finally clause, and maybe also exception handling, in the application code.

  The stream passed in is not buffered internally within this method. This is the responsibility of the caller, if desired.

  Parameters:
    `inputStream` - the serialized object input stream, must not be null
    `loader` - The classloader to use
  Returns:
    the deserialized object
  Throws:
    `IllegalArgumentException` - if `inputStream` is `null`
    `SerializationException` - (runtime) if the serialization fails

### doDeserialize

    public static Object doDeserialize(InputStream inputStream,
                                       ClassLoader loader,
                                       ClassLoader fallbackLoader1,
                                       ClassLoader fallbackLoader2)
                                throws SerializationException

  Throws:
    `SerializationException`

### deserialize

    public static Object deserialize(byte[] objectData)
                              throws SerializationException

  Deserializes an object from an array of bytes using the Thread Context ClassLoader (TCCL). If there is no TCCL set, the classloader of the calling class is used.

  Delegates to `deserialize(byte[], ClassLoader)`

  Parameters:
    `objectData` - the serialized object, must not be null
  Returns:
    the deserialized object
  Throws:
    `IllegalArgumentException` - if `objectData` is `null`
    `SerializationException` - (runtime) if the serialization fails

### deserialize

    public static Object deserialize(byte[] objectData,
                                     ClassLoader loader)
                              throws SerializationException

  Deserializes an object from an array of bytes.

  Delegates to `deserialize(java.io.InputStream, ClassLoader)` using a `ByteArrayInputStream` to wrap the array.

  Parameters:
    `objectData` - the serialized object, must not be null
    `loader` - The classloader to use
  Returns:
    the deserialized object
  Throws:
    `IllegalArgumentException` - if `objectData` is `null`
    `SerializationException` - (runtime) if the serialization fails

Copyright © 2001-2012 Red Hat, Inc. All Rights Reserved.