Object Graph in Java Serialization - GeeksforGeeks

05 Sep, 2017
Most of you must be aware with the Serialization involving single object but have you ever thought what if the object has reference to other objects too. Will it be serialized? Will reference objects will be serialized?Answer to these queries is yes, you don’t have to explicitly serialize reference objects. Let’s find out how this can be achieved.
What is Object Graph?An Object Graph is the set of objects which will be serialized automatically, if the object which contains reference to them is serialized.In other words, we can say that when we serialize any object and if it contains any other object reference then JVM serializes the object and as well as its object references.Lets make it more clear with the help of a simple example.
// Java program to demonstrate how serializing // an object serializes other reference objects.import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;  // Class Serial1 contains reference to object // of class Serial2. class Serial1 implements Serializable {     Serial2 s2 = new Serial2(); }  // Class Serial2 contains reference to object // of class Serial3. class Serial2 implements Serializable {     Serial3 s3 = new Serial3(); }  // A reference of this class is present in Serial2class Serial3 implements Serializable {     int i = 10;     int j = 20;}  class DemoSerialize {       public static void main(String args[]) throws Exception {       // Creating object of class Serial1     Serial1 s1 = new Serial1();       // Serializing object of class Serial1     // Saving object in file     FileOutputStream fos = new FileOutputStream("abc.ser");     ObjectOutputStream oos = new ObjectOutputStream(fos);       // Method for serializing object of class Serial1     oos.writeObject(s1);       // Close streams once serialization is done     fos.close();     oos.close();       // De-Serializing object of class Serial1       // Reading object from file     FileInputStream fis = new FileInputStream("abc.ser");     ObjectInputStream ois = new ObjectInputStream(fis);       // Method for de-serializing object of class Serial1          Serial1 serobject = (Serial1) ois.readObject();       // Close streams once de-serialization is done     fis.close();     ois.close();       // Printing values of i and j after Serialization     System.out.println("Value of i after Serialization" +                                " is " + serobject.s2.s3.i);     System.out.println("Value of j after Serialization" +                                 " is "+serobject.s2.s3.j);  }}
Output:
Value of i after Serialization is 10
Value of j after Serialization is 20

Note: In object graph every object should be serializable. If at-least one object is not serializable then we will get runtime execution saying NonSerializableExecution.
This article is contributed by Somya Garg. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Object Oriented Programming (OOPs) Concept in Java
HashMap in Java with Examples
Interfaces in Java
How to iterate any Map in Java
ArrayList in Java
Initialize an ArrayList in Java
Stack Class in Java
Singleton Class in Java
Multithreading in Java
Multidimensional Arrays in Java