public final class

SerializationHelper

extends Object
java.lang.Object
   ↳ org.hibernate.util.SerializationHelper

Class Overview

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.

Summary

Public Methods
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(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 deserialize(byte[] objectData, ClassLoader loader)
Deserializes an object from an array of bytes.
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.

[Expand]
Inherited Methods
From class java.lang.Object

Public Methods

public static Object clone (Serializable object)

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

public static ClassLoader defaultClassLoader ()

Returns the Thread Context ClassLoader (TCCL).

Returns
  • The current TCCL

public static Object deserialize (byte[] objectData)

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

public static Object deserialize (InputStream inputStream)

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

Delegates to doDeserialize(InputStream, ClassLoader, ClassLoader, 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

public static Object deserialize (InputStream inputStream, ClassLoader loader)

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

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

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

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

public static ClassLoader hibernateClassLoader ()

public static byte[] serialize (Serializable obj)

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

public static void serialize (Serializable obj, OutputStream outputStream)

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