我正在開發一個C++域模型類庫,它應該提供一些工具或框架(即接口類等),用於將類實例數據寫入/讀取一個二進制文件和一個RDBMS。該庫的基礎是一個使用RDBMS的應用程序,並且有幾種方法通過執行一系列數據庫檢索和更新調用以獲取成員數據集合來實例化類。序列化數據訪問具有不同的數據組織方式,所以我希望域模型完全不知道主鍵/外鍵,ID等。如何使用數據訪問對象進行序列化和關係數據庫數據訪問
要解決此問題,我考慮使用Data Access Object(DAO)模式,並希望對DAO對象的「粒度」,生命週期和使用有一些建議(在您的回覆中,請注意,我將使用C++而不是Java,並且域類不能包含任何ID /密鑰信息從RDBMS或二進制文件存儲):
- 是否域對象的每個實例美孚擁有自己的FooDAO實例,或者是有Foo類的所有實例的單個實例FooDAO?
- FooDAO是否爲每個Foo實例創建一次,還是僅在需要訪問數據時創建FooDAO實例,並在之後立即銷燬?
- DAO上的J2EE頁面除DAO外還引入了DTO。爲什麼DAO不能傳輸數據?
- 對於具有其他域類Bar實例的複雜域類Foo,FooDAO類使用BarDAO類檢索數據似乎是不可避免的。這將導致域類結構和DAO類結構中的並行層次結構/依賴關係。這怎麼能最好地管理?
感謝您的幫助!