私はdb4oオブジェクトデータベースを試していますが、これまでのところ私が見ているものはかなり気に入っていますが、スタックオーバーフローdb4oエクスペリエンスに関するこの投稿も読んでいますか? 簡単そうに見えることがすべて簡単ではないことを示しています。
現在、実際のアプリで db4o がどのように使用されているかについていくつか質問があります。ですから、db4o を (特に Web アプリケーションのコンテキストで) 使用した経験がある場合は、ぜひお聞かせください。
ここに私の質問があります:
db4o に格納されたオブジェクトを操作するときに、オブジェクト ID をどのように管理しますか?**
RDBMS のバックグラウンドから来て、通常は常にすべてのテーブルに主キー/ID 列があるため、db4o でオブジェクト ID を管理する方法について今のところ想像できません。たとえば、NHibernate / mysql を使用していて、id でユーザー オブジェクトを検索する必要がある場合、session.Load(primaryKey) を実行すると、その PK によって取得されます。PK がテーブル定義で自動インクリメントとして定義されていることも非常に一般的です。
db4o にはそのようなオプションがないため、オブジェクト データベース内のいくつかのオブジェクトを識別するために Guid 構造体を使用することを考えました。
データベースに保存されたオブジェクトを表示するツールはありますか?
db4o の世界に SQL Server Management Studio (おそらくあまり洗練されていない) のようなものはありますか? db ファイルに既に保存されているデータ/オブジェクトを表示したいと思います。
ドメイン オブジェクトの名前を変更するときにうんざりしていませんか?
クラスの名前を変更すると、以前にデータベースに保存されたインスタンスを取得できなくなります。この問題を回避する方法はありますか? すでに多くのオブジェクトを含むライブ データベースに対する更新をどのように処理しますか?
プロパティを DB に保存しないようにすることはできますか?
たとえば、1 つのドメイン オブジェクトが (ステートレス) サービス オブジェクトへの参照を保持している場合、ドメイン オブジェクトが永続化されるとサービス オブジェクトも永続化されますよね?
少なくとも私には、サービス インスタンスをデータベースに保存するのは少し奇妙に思えます。
サービス インスタンスを保存から除外できますか? ドメイン オブジェクトが再度取得された場合、サービスがインスタンスにも再度挿入されるようにするにはどうすればよいですか?