デスクトップアプリケーションにJavaオブジェクトの大きなツリーがあり、それらをファイルとしてファイルシステムに永続化するための最良の方法を決定しようとしています。
私が持っていたいくつかの考えは次のとおりです。
DataOutputStreamを使用して自分のシリアライザーをロールします。これにより、ファイルの内容を最大限に制御できますが、マイクロ管理が犠牲になります。
ObjectOutputStreamとそのさまざまな関連クラスを使用した単純な古いシリアル化:データが脆弱であることがわかったため、販売されていません。オブジェクトの構造を変更すると、そのオブジェクトのシリアル化されたインスタンスが壊れます。だから私は恐ろしいバージョン管理の悪夢のように見えるものに閉じ込められています。
XMLシリアル化:それほど脆弱ではありませんが、直接のシリアル化よりも大幅に遅くなります。それは私のプログラムの外で変換することができます。
JavaDB:JDBCアプリケーションの作成に慣れているので、これを検討しました。ここでの違いは、データベースインスタンスは、ファイルが開かれている間、または保存されている間だけ存続するということです。きれいではありませんが...後で必要になった場合に中央サーバーアーキテクチャに移行するのに役立ち、より簡単な方法でデータモデルを検索する可能性があります。
他の人の意見を知りたいです。そして、私は上記のものよりも明白で単純なアプローチを見逃したことを望んでいます。
以下の回答から抜粋したその他のオプションを次に示します。
- オブジェクトデータベース-ORMアプローチよりもインフラストラクチャが大幅に少なく、XMLアプローチよりも高速に実行されます。ありがとうaku