2012-05-03 3 views
0

現在、このプロジェクトでは、VOの(値オブジェクト)クラスがSerializableインターフェイスを実装してシリアル化されています。このクラスはゲッターとセッターを何も持っていません。 コード内のどこでwriteObjectを実行しているか、またはオブジェクトの状態を保存している場所はありません。オブジェクトの状態を保存せずにVOでシリアル化を実装しますか?

私のVO Serializableを作るための価値はありますか?

+0

すべての方法と場所によって異なります(SwingアプリケーションのDnDでも使用できますが、JEEアプリケーション内のEJBでも使用できます)。コンテキストを指定してください。オブジェクトを "Serializable"にするためにwriteObjectとreadObjectをオーバーライドする必要はありません。 –

+0

こんにちは、これはJEEアプリケーションですが、ネットワーク経由でこのVOオブジェクトを送信しません。このVOは、小さなコンテキスト内で、クラス間でデータをやりとりするように動作します。しかし、私がここで理解したいのは、オブジェクトの状態がどこに保存されるのかメソッドをオーバーライドしないとすればいいのですか?私はそれを特定のファイルに書き込まない場合、その使用法。 –

+1

非過渡/非静的フィールドに格納されているものはすべて、自動的にシリアライズ/デシリアライズされます。 –

答えて

0

簡単なケースで議論しましょう:いくつかの値オブジェクトをラップするエンティティを想像してください。例えば、Hibernateフレームワークなどでエンティティを管理したいとします。

Hibernateはシリアライズ可能なクラスが必要になる場合があります

クラスがSerializableを実装する必要があります。厳密に言えば、これは ではありません。しかし、実際には、あなたは通常、彼らは(潜在的に)ことができるように Hibernateのオブジェクトを直列化可能になるでしょう マルチプロセッサクラスタの周りに移行または 渡って、Webサーバーの再起動を保存し、復元などもちろん

、デフォルトのシリアライゼーションではリフレクションを使用してオブジェクトの状態を保存および復元するため、正確なwriteObjectおよびreadObjectメソッドを使用する必要はありません。

実際に、これらのメソッドは、デシリアライズ時に事前定義されたデフォルト値を使用してフィールド(クライアントクラスには存在しますが、サーバークラスには存在しません)を初期化するなど、

関連する問題