我有一個Java應用程序使用默認的Java對象序列化(ObjectOutputStream
等)將對象樹保存到文件。這工作很好。使用版本控制保存Java對象樹?
當我將對象添加到對象樹中的對象時,會出現問題。當我現在加載舊的對象樹時,我得到一個ClassException
,這當然是有道理的,因爲對象/類改變了,舊類與新類不匹配。
現在我可以編寫不同版本的加載方法,以便它可以處理舊的對象樹,但我懷疑這可能變得不容易管理和維護。
我想知道是否有更好的方法來保存支持版本控制的java對象樹?
我有一個Java應用程序使用默認的Java對象序列化(ObjectOutputStream
等)將對象樹保存到文件。這工作很好。使用版本控制保存Java對象樹?
當我將對象添加到對象樹中的對象時,會出現問題。當我現在加載舊的對象樹時,我得到一個ClassException
,這當然是有道理的,因爲對象/類改變了,舊類與新類不匹配。
現在我可以編寫不同版本的加載方法,以便它可以處理舊的對象樹,但我懷疑這可能變得不容易管理和維護。
我想知道是否有更好的方法來保存支持版本控制的java對象樹?
您可以使用此方法(實施readObject
和writeObject
)來處理架構遷移:http://www.javaworld.com/javaworld/jw-02-2006/jw-0227-control.html
我只需要停止寫評論並將它們變成答案= \ – 2013-04-08 14:21:51
乾杯Ranjan和Luiggi!並感謝文章鏈接,是一個有趣的閱讀。 – 2013-04-08 16:56:01
使用的readObject() 和writeObject()的ObjectInputStream和ObjectOutputStream的類 方法在Serializable類 以定義從 您的文件序列化/反序列化對象時的默認行爲ObjectOutputStream oos = new ObjectOutputStream(file/path/url); oos.writeObject(serialized Object); oos.close(); oos.flush(); ObjectInputStream ois = new ObjectInputStream(file/path/url/request); Object obj =(TypeCast to appropriate Object)ois.readObject();
您可以在Serializable類中使用'readObject'和'writeObject'方法來定義從文件序列化/反序列化對象時的默認行爲。 – 2013-04-08 14:19:54
我不會使用Java序列化進行長期存儲。我會使用數據庫或XML或JSON或任何其他可解析且易於遷移的格式。 – 2013-04-08 14:21:46