我正在开发一个 C++ 域模型类库,它应该提供一些设施或框架(即接口类等),用于向二进制文件和 RDBMS 写入/读取类实例数据。这个库的基础是一个使用 RDBMS 的应用程序,并且有几个方法通过执行一系列数据库检索和更新调用来获取成员数据的集合来实例化一个类。序列化数据访问具有不同的数据组织方式,因此我希望域模型完全不知道主键/外键、ID 等。
为了解决这个问题,我考虑使用数据访问对象(DAO) 模式,并希望对 DAO 对象的“粒度”、生命周期和使用提供一些建议(在您的回复中,请注意我将使用 C++ ,而不是 Java,并且域类不能保存来自 RDBMS 或二进制文件存储的任何 ID/密钥信息):
- 域对象的每个 Foo 实例是否都有自己的 FooDAO 实例,或者 Foo 类的所有实例是否都有一个 FooDAO 实例?
- FooDAO 是为每个 Foo 实例创建一次,还是仅在需要访问数据时才创建 FooDAO 实例,然后立即销毁?
- DAO 上的J2EE页面除了 DAO 之外还引入了 DTO。为什么 DAO 不能传输数据?
- 对于具有其他域类 Bar 的实例的复杂域类 Foo,FooDAO 类似乎不可避免地使用 BarDAO 类来检索数据。这将导致域类结构和 DAO 类结构中的并行层次结构/依赖关系。如何最好地管理它?
谢谢你的帮助!