C++ ODB ORM 入门与实战指南
ODB 是一个针对 C++ 的对象关系映射(ORM)库,它允许开发者以面向对象的方式操作数据库,将 C++ 对象与数据库表进行映射,从而避免直接编写 SQL 语句,简化数据库操作。
ODB 核心特性
- 对象 - 关系映射:将 C++ 类映射到数据库表,类的成员变量映射到表的字段。对象的创建、修改、删除等操作会自动转换为对应的数据库操作(如
INSERT、UPDATE、DELETE)。 - 编译期代码生成:ODB 不依赖运行时反射(C++ 本身不支持),而是通过编译期代码生成实现映射。开发者使用特殊的注解(如
#pragma db object)标记需要持久化的类,然后通过 ODB 编译器生成与数据库交互的代码。 - 多数据库支持:兼容主流数据库,如
MySQL、PostgreSQL、SQLite、Oracle等,切换数据库时无需修改核心业务代码,只需调整配置。 - 查询能力:提供类似 SQL 的查询接口(通过 C++ 表达式构建),例如通过
query类组合条件,实现复杂查询逻辑,避免手写 SQL。 - 事务支持:内置事务管理机制,确保数据库操作的原子性、一致性、隔离性和持久性(ACID)。
环境搭建与安装
1. 安装 Build2 构建系统
首先需要在系统中安装 build2 工具链。Linux 环境下可以通过脚本快速安装:
curl -sSfO https://download.build2.org/0.17.0/build2-install-0.17.0.sh
sh build2-install-0.17.0.sh
2. 安装 ODB 编译器
接下来配置并安装 odb-compiler。注意这里的 gcc 版本需根据实际环境调整。
sudo apt-get install gcc-11-plugin-dev
mkdir odb-build && cd odb-build
bpkg create -d odb-gcc-N cc \
config.cxx=g++ \
config.cc.coptions=-O3 \
config.bin.rpath=/usr/lib \
config.install.root=/usr/ \
config.install.sudo=sudo
cd odb-gcc-N
bpkg build odb@https://pkg.cppget.org/1/beta
bpkg test odb test odb-2.5.0-b.25+1/tests/testscript{testscript} tested odb/2.5.0-b.25+1
bpkg install odb
如果执行 odb --version 提示找不到命令,可能需要更新环境变量:
sudo echo 'export PATH=${PATH}:/usr/local/bin' >> ~/.bashrc
export PATH=${PATH}:/usr/local/bin
odb --version
3. 安装运行时库与依赖
除了编译器,还需要安装运行时库和 Boost 支持。
..
bpkg create -d libodb-gcc-N cc \
config.cxx=g++ \
config.cc.coptions=-O3 \
config.install.root=/usr/ \
config.install.sudo=
libodb-gcc-N
bpkg add https://pkg.cppget.org/1/beta
bpkg fetch
bpkg build libodb
bpkg build libodb-mysql
bpkg build libodb-boost
bpkg install --all --recursive


