If I have an instance of a class that I store in a session I need to make it serializable. This class has a static variable, will this be serialized in every instance stored?
The static variable is a reference to a cache containing a lot of data in the background. Will all of this data be serialized? If so, it seems preferable to make this variable transient and re-fetch the cache instance each time the instance is restored. Maybe not store the cache instance at all in the class.
Will the constructor execute when a class is restored from a serialized state? if not is there any other method I can use to re-instate a transient variable?
No. According to the Java Object Serialization Specificaiton: “Default serializable fields of a class are defined to be the non-transient and non-static fields.”
No. Deserialization bypasses constructors (unless you have a non-serializable superclass).
You can use the
readObject()method for that, as described in theSerializableAPI doc.