3

デスクトップ アプリケーションの永続化メカニズムとして db4o を使用することに関心がありますが、いくつか気になる点があります。

1 番目の懸念: 非常に複雑なオブジェクト グラフを誤ってクリッピングする。

高さ 10 のツリーがあり、ルートをフェッチするとします。ルート オブジェクトを再度格納する処理はどのように処理されるのでしょうか。

私の理解では、ツリー全体を取得するのではなく、最初の 5 つの参照レイヤーを取得します。

だから..ルートに些細な変更を加えて保存すると、ツリーのさらに下のノードが切り取られ、本質的にそれらが削除されます。

そうでない場合..これをどのように処理しますか?

2 番目の問題: より大きなオブジェクト グラフでサブグラフを抽出する

上記のツリーの例を使用すると...データベースに1つの巨大なツリーが含まれている場合、その中の単一のノードを照会できますか? は 1 回だけ呼び出されたので.store、私のデータベースは「レコード」が 1 つだけ含まれていると考えていますか?

ありがとうございました。

4

2 に答える 2

2

DB4O のトランスペアレント アクティベーションは、あなたがここで表明した懸念のほとんどを解決するはずです。

于 2009-09-27T20:16:39.790 に答える
2

2 つのことが発生する可能性があるため、非常に注意する必要があります。データベース全体をメモリにプルするか、部分的なグラフ (残りのオブジェクトは null になります)。
db4o には、dbv40 の構成時、またはオブジェクトのフェッチ時に構成できるアクティベーターと更新の深さの概念があります。これは、参照されたオブジェクトをフェッチするときに、db40 にどれだけ深く行きたいかを伝える方法です。db4o Web サイトをチェックしてください。それに関するドキュメントがあります:
http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle/Activation
http://developer.db4o.com/Resources/view.aspx/Reference/Object_Lifecycle /Update_Depth

于 2009-01-13T12:56:16.883 に答える