10

デスクトップアプリケーションにJavaオブジェクトの大きなツリーがあり、それらをファイルとしてファイルシステムに永続化するための最良の方法を決定しようとしています。

私が持っていたいくつかの考えは次のとおりです。

  • DataOutputStreamを使用して自分のシリアライザーをロールします。これにより、ファイルの内容を最大限に制御できますが、マイクロ管理が犠牲になります。

  • ObjectOutputStreamとそのさまざまな関連クラスを使用した単純な古いシリアル化:データが脆弱であることがわかったため、販売されていません。オブジェクトの構造を変更すると、そのオブジェクトのシリアル化されたインスタンスが壊れます。だから私は恐ろしいバージョン管理の悪夢のように見えるものに閉じ込められています。

  • XMLシリアル化:それほど脆弱ではありませんが、直接のシリアル化よりも大幅に遅くなります。それは私のプログラムの外で変換することができます。

  • JavaDB:JDBCアプリケーションの作成に慣れているので、これを検討しました。ここでの違いは、データベースインスタンスは、ファイルが開かれている間、または保存されている間だけ存続するということです。きれいではありませんが...後で必要になった場合に中央サーバーアーキテクチャに移行するのに役立ち、より簡単な方法でデータモデルを検索する可能性があります。

他の人の意見を知りたいです。そして、私は上記のものよりも明白で単純なアプローチを見逃したことを望んでいます。


以下の回答から抜粋したその他のオプションを次に示します。

  • オブジェクトデータベース-ORMアプローチよりもインフラストラクチャが大幅に少なく、XMLアプローチよりも高速に実行されます。ありがとうaku
4

6 に答える 6

5

最後のオプションであるJavaDB(SunによるDerbyのディストリビューション)を選択し、 HibernateiBatisなどのオブジェクトリレーショナルレイヤーを使用します。最初の3つのアプローチを使用すると、アプリケーション機能の開発よりもデータベースエンジンの構築に多くの時間を費やすことになります。

于 2008-09-01T00:00:26.873 に答える
4

データベースに接続するためのより簡単な方法として、Hibernateをご覧ください。

于 2008-08-31T23:54:01.303 に答える
4

私の経験では、おそらく組み込みデータベースを使用した方がよいでしょう。SQL は、完璧とは言えませんが、パフォーマンスが高く信頼できるファイル形式を設計するよりも、通常ははるかに簡単です。

私は JavaDB を使用したことはありませんが、H2SQLiteでうまくいきました。SQLite は C ライブラリであり、展開に関してはもう少し作業が必要です。ただし、データベース全体を単一のクロスプラットフォーム ライブラリに格納できるという利点があります。基本的に、パッケージ化された汎用ファイル形式です。SQLite は非常に便利だったので、スクリプトでテキスト ファイルの代わりに使用するようになりました。

永続性に小さな問題がある場合は、Hibernate の使用に注意してください。多くの複雑さとライブラリのオーバーヘッドが追加されます。Hibernate は、多数のテーブルを操作している場合は非常に便利ですが、少数のテーブルしか必要としない場合は、おそらく扱いにくいでしょう。

于 2008-09-01T01:43:47.390 に答える
3

db4objectsが最良の選択かもしれません

于 2008-09-01T00:18:37.313 に答える
1

codehaus.orgからのXStream

主にコーディングなしのXMLシリアル化/逆シリアル化。注釈を使用して微調整できます。私が働いている2つのプロジェクトでうまく働いています。

http://cjugaustralia.org/?p=61でユーザーグループのプレゼンテーションを参照してください

于 2008-09-01T00:00:02.693 に答える
0

何が必要かによると思います。オプションを見てみましょう:

1) すぐに捨てる!私は正当化することさえしません。:)

2) シンプルで迅速な 1 つのメソッドの永続化が必要な場合は、それを使用してください。完全なデータ グラフをそのまま保持します。永続化されたオブジェクトを維持する期間に注意してください。あなたが指摘したように、バージョン管理は問題になる可能性があります。

3) (2) より遅く、追加のコードが必要で、ユーザーが編集できます。私は、データが別の言語のクライアントによって使用されることになっている場合にのみ使用します。

4) とにかくデータを照会する必要がある場合は、DB ソリューションを使用してください。

さて、あなたはすでにあなたの質問に答えていると思います:)

于 2008-09-02T12:33:48.533 に答える