Я разрабатываю библиотеку классов модели домена C++, которая должна предоставлять некоторые средства или фреймворк (например, классы интерфейса и т. Д.) Для записи/чтения данных экземпляра класса в/из обоих двоичный файл и СУБД. Основой для этой библиотеки является приложение, использующее RDBMS, и существует несколько методов, которые создают экземпляр класса, выполняя последовательность извлечения базы данных и обновляя вызовы для извлечения коллекций данных-членов. Сериализованный доступ к данным имеет другой способ организации своих данных, поэтому я хочу, чтобы модель домена полностью не знала первичные/внешние ключи, идентификаторы и т. Д.Как использовать объекты доступа к данным для доступа к данным с последовательной и реляционной базой данных
Для решения этой проблемы я рассматриваю использование шаблона Data Access Object (DAO) , и хотел бы получить некоторые рекомендации по «детализации», времени жизни и использованию объектов DAO (в ваших ответах обратите внимание, что я буду использовать C++, а не Java, и что класс домена не может содержать информацию о ID/ключе из RDBMS или двоичного хранилища файлов):
- ли каждый экземпляр Foo объекта домена иметь свой собственный экземпляр FooDAO, или есть один экземпляр FooDAO для всех экземпляров класса Foo?
- Является ли FooDAO созданным один раз для каждого экземпляра Foo, или будет создан экземпляр FooDAO только тогда, когда потребуется доступ к данным и будет немедленно уничтожен?
- Страница DAO вводит DTO в дополнение к DAO. Почему DAO не передает данные?
- Для сложного класса домена Foo, который имеет экземпляры других классов классов Bar, кажется неизбежным, что класс FooDAO использует класс BarDAO для извлечения данных. Это приведет к параллельной иерархии/зависимостям в структуре класса домена и структуре класса DAO. Как это можно лучше всего управлять?
Благодарим за помощь!