三层架构是软件架构中常用的架构,它从上往下分为表示层、业务逻辑层、数据访问层。下面重点介绍 C++ 程序的数据访问层设计。
什么是 DAO
在计算机软件中,数据访问对象(data access object,DAO)是为某种类型的数据库或其他持久性机制提供一个抽象接口的对象。通过映射应用程序对持久层的调用,DAO 提供一些特定的数据操作,而无需暴露数据库细节。这种隔离支持单一功能原则。
数据访问对象模式(Data Access Object Pattern)或 DAO 模式用于把低级的数据访问 API 或操作从高级的业务服务中分离出来。
数据访问对象模式的参与者主要有:
- 数据访问对象接口(Data Access Object Interface) - 该接口定义了在一个模型对象上要执行的标准操作。
- 数据访问对象实体类(Data Access Object concrete class) - 该类实现了上述的接口。该类负责从数据源获取数据,数据源可以是数据库,也可以是 xml,或者是其他的存储机制。
- 模型对象/数值对象(Model Object/Value Object, VO) - 该对象是简单的 POJO,包含了 get/set 方法来存储通过使用 DAO 类检索到的数据。
主流的 ORM 框架
C++ 中主流的 ORM 框架有以下几个:
- LiteSQL:https://sourceforge.net/projects/litesql/
- ODB:https://www.codesynthesis.com/products/odb/
- QxOrm:https://www.qxorm.com/qxorm_en/home.html
- Wt::Dbo:https://www.webtoolkit.eu/wt/doc/tutorial/dbo.html
其中,LiteSQL 和 ODB 不依赖于特定的框架,而 QxOrm 依赖于 Qt,Wt::Dbo 依赖于 Wt。由于使用QT进行开发,最终决定使用QxOrm。本想使用QDB,但是在QT上开发太麻烦。
参考链接
- C++实现的DAO(数据访问对象模式),by Jinkai.
- QxOrm使用教程(ORM for C++ 对象关系映射),by ljjyy.
- 浅谈C++三层架构,by eric0803.
- C++架构之美:设计卓越应用,by qt.video.
- Dao层设计,by c++天下第一.
- 如何设计一个简单的 C++ ORM,by bot-man-jl.
- C++ ORM ODB入门,by aliyun.
- TinyORM:一个简单的C++ ORM框架,by davidpp.
- C++版本 ORM 访问数据库之ODB 的Window环境编译(一),by Software_hul.
- Windows下Qt5.5.1中使用ODB,by 严慈善.
- 【一】ODB - C++ 访问数据库的利器–Hello World On Windows(Version-24),by C++程序员Carea.
- error LNK2001: 无法解析的外部符号 “__declspec(dllimport) public 解决办法,by 鸡啄米的时光机.
- qxBlog project - blog management in C++,by QxOrm.
- Qt三层架构应用程序设计及开发,by wyh20171105.
- Qt项目架构经验总结,by cps666.
- Qt SQL的使用 MySQL,by 一杯清酒邀明月.