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.

Since:
1.0
  • Method Details

    • 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 given stream.

      The stream will be closed once the object is written. This avoids the need for a finally clause, and maybe also for 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:
      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 or externalization.
      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 <T> T deserialize(InputStream inputStream) throws SerializationException
      Deserializes an object from the given 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 given 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 for 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 <T> T 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(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