Skip to content
Related Articles

Related Articles

Object Graph in Java Serialization

View Discussion
Improve Article
Save Article
Like Article
  • Difficulty Level : Medium
  • Last Updated : 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.
// 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 Serial2
class 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
     // Close streams once serialization is done
     // 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
     // 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);


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 or mail your article to 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.

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!