バイナリ ファイルと RDBMS の両方にクラス インスタンス データを読み書きするための機能またはフレームワーク (つまり、インターフェイス クラスなど) を提供する C++ ドメイン モデル クラス ライブラリを開発しています。このライブラリの基礎は、RDBMS を使用するアプリケーションです。データベースの取得と更新の一連の呼び出しを実行してメンバー データのコレクションを取得することにより、クラスをインスタンス化するメソッドがいくつかあります。シリアル化されたデータ アクセスでは、データを整理する方法が異なるため、ドメイン モデルがプライマリ/外部キー、ID などを完全に認識しないようにする必要があります。
この問題を解決するために、私はデータ アクセス オブジェクト(DAO) パターンの使用を検討しており、DAO オブジェクトの「粒度」、有効期間、および使用についてアドバイスをお願いしたいと思います (返信では、C++ を使用することに注意してください)。であり、ドメイン クラスは RDBMS またはバイナリ ファイル ストアからの ID/キー情報を保持できない):
- ドメイン オブジェクトの各 Foo インスタンスには独自の FooDAO インスタンスがありますか、それともクラス Foo のすべてのインスタンスに対して単一の FooDAO インスタンスがありますか?
- FooDAO は Foo インスタンスごとに 1 回作成されますか?それとも、FooDAO インスタンスはデータへのアクセスが必要な場合にのみ作成され、その後すぐに破棄されますか?
- DAOのJ2EEページでは、DAO に加えて DTO を紹介しています。DAO がデータを転送できないのはなぜですか?
- 他のドメイン クラス Bar のインスタンスを持つ複雑なドメイン クラス Foo の場合、FooDAO クラスが BarDAO クラスを使用してデータを取得することは避けられないようです。これは、ドメイン クラス構造と DAO クラス構造に並列の階層/依存関係をもたらします。これをどのように管理するのが最善でしょうか?
ご協力いただきありがとうございます!