Home > DeveloperSection > Articles > Serialization in Java

Serialization in Java


Java Java  JMS  J2EE  EJB  Hibernate 
Ratings:
0 Comment(s)
 875  View(s)
Rate this:

 

Serialization in Java       



Serialization is a process of converting an object into a stream.

It is mainly used in Hibernate, RMI, JPA, EJB, JMS technologies.

The main advantage of Serialization is to be travel object's state on the network (known as marshaling).

The reverse operation of serialization is called deserialization. Deserialization is the process of reconstructing the object from the serialized state.

The String class and all the wrapper classes’ implements java.io.Serializable interface by default.

Serializable is a marker interface (has no body). It is just used to "mark" java classes which support a certain capability. It must be implemented by the class whose object you want to persist.

Let’s take an example, we are going to serialize the object of Emp & MyClient class. The writeObject () method of ObjectOutputStream class provides the functionality to serialize the object. We are saving the state of the object in the file named Employee.txt. and deserialized in MyServer class.

Note:-


1.    Only non-static data member are saved via serialization process.

2.    Static data member and transient data member are not saved via serialization process.

3.    If you does not want to save the value of any non- static data member via serialization process then make it transient.

4.    If parent class has implemented the Serializable interface then child class does not need to implement but vice versa is not true.

      import java.io.*;
//Emp.java
public class Emp  implements Serializable
{
transient int a;//it will not be serialized.
static int b;
String name;
int age;
int z;
Emp(String name,int age,int a,int b,int z)
{
    this.name=name;
    this.age=age;
    this.a=a;
    this.b=b;
    this.z=z;
}
class  MyClient
{

  public MyClient()
    {
        try{
            Emp e1= new Emp("Anupam Mishra",24,5,10,15);
            FileOutputStream fout=new FileOutputStream("Employee.txt");  
  ObjectOutputStream out=new ObjectOutputStream(fout);  
  
  out.writeObject(e1);  

            out.flush();
        }catch(Exception e){System.out.println(e);}
    }
    public static void main(String...ss)
    {new MyClient();
    System.out.println("Serialization in MyClient is success");}
}
class MyServer
{
    ObjectInputStream dis;
    public MyServer()
    {
        try{
            dis=new ObjectInputStream(new FileInputStream("Employee.txt"));
            Emp z= (Emp)dis.readObject();
            System.out.println("Name :"+z.name);
            System.out.println("Age :"+z.age);
            System.out.println("a :"+z.a);
            System.out.println("b :"+z.b);
            System.out.println("Z :"+z.z);
        }catch(Exception e){System.out.println(e);}
        }
        public static void main(String...ss)
    {new MyServer();
    System.out.println("Deserialized in MyServer is completed");}}

Output:



Don't want to miss updates? Please click the below button!

Follow MindStick