ODB 2.5 从安装到实战:C++ ORM 工具手把手教程

作为一名 C++ 开发者,你是否还在为手写 SQL、处理数据库连接、维护表结构与代码实体的映射关系而头疼?ODB(Object-Relational Mapping)作为 Code Synthesis 推出的 C++ ORM 工具,能帮我们把 C++ 类直接映射到数据库表,彻底摆脱重复的数据库操作代码。这篇文章会从 ODB 2.5 的安装踩坑,到实战代码解析,带你完整掌握这个工具 —— 文末还附了可直接复用的 DAO 层封装,新手也能快速上手。

一、先搞懂:ODB 到底能帮我们做什么?

简单说,ODB 是 “C++ 类” 和 “数据库表” 之间的桥梁:

  • 不用手写 CREATE TABLE,ODB 能根据 C++ 类自动生成数据库 schema;

  • 不用写 INSERT/UPDATE/SELECT,调用 ODB 的persist()/update()/query()就能操作数据;

  • 自动处理 C++ 类型与 MySQL 类型的映射(比如std::string对应VARCHARboost::posix_time对应TIMESTAMP);

  • 支持事务、连接池,解决多线程下的数据库操作安全问题。

本文用到的示例代码来自 “比特就业课” 的 C++ 聊天系统项目,完整代码可在 Gitee 获取:cpp-chatsystem

二、ODB 2.5 安装:避坑指南(Linux 环境)

ODB 安装依赖build2编译工具,整个过程大概 3-5 小时(主要耗在网络下载),重点注意版本兼容性和网络超时问题

2.1 第一步:安装 build2(编译基础)

build2 是 ODB 的依赖工具,用来构建后续的 ODB 编译器和运行时库。注意:build2 版本会更新(比如从 0.17 升到 0.18),安装前先去build2 官网确认最新步骤,这里以 0.17.0 为例:

  1. 下载并执行安装脚本(在 PowerShell 或终端执行):
# 进入工作目录(比如~/workspace)
cd ~/workspace
# 下载安装脚本
curl -sSfO https://download.build2.org/0.17.0/build2-install-0.17.0.sh
# 执行脚本(默认安装到/usr/local/bin)
sh build2-install-0.17.0.sh
  1. 踩坑点 1:网络超时

    如果执行脚本时卡在 “下载文件” 步骤,提示 “timeout”,给脚本加--timeout 1800(超时时间设为 30 分钟):

sh build2-install-0.17.0.sh --timeout 1800

2.2 第二步:安装 ODB 编译器(odb-compiler)

ODB 编译器的作用是:把带#pragma db指令的 C++ 类(比如Person),生成数据库操作的支持代码(比如person-odb.cxx)。

  1. 先装 gcc 插件开发包(注意替换成你系统的 gcc 版本):
# 查看gcc版本:gcc --version,比如我的是gcc-11

sudo apt-get install gcc-11-plugin-dev
  1. 创建构建目录并初始化编译配置:
# 创建odb-build目录,避免污染源码
mkdir odb-build && cd odb-build
# 初始化cc编译环境,指定g++为编译器,优化等级O3,安装路径/usr
bpkg create -d odb-gcc-N cc \
config.cxx=g++ \
config.cc.coptions=-O3 \
config.bin.rpath=/usr/lib \
config.install.root=/usr/
  1. 编译并安装 ODB 编译器:
# 进入配置好的环境目录
cd odb-gcc-N
# 从官方源编译odb(beta版,稳定可用)
bpkg build config.install.sudo=sudo odb@https://pkg.cppget.org/1/beta
# 测试编译结果(可选,确保没问题)
bpkg test odb
# 安装odb
bpkg install odb
  1. 踩坑点 2:执行 odb --version 提示 “找不到命令”

    这是因为 ODB 安装到了/usr/local/bin,但系统 PATH 没包含这个路径。执行以下命令添加(永久生效):

# 把路径写入bashrc
sudo echo 'export PATH=${PATH}:/usr/local/bin' >> ~/.bashrc
# 立即生效
export PATH=${PATH}:/usr/local/bin
# 验证:成功显示版本号则没问题
odb --version
# 正确输出示例:
# ODB object-relational mapping (ORM) compiler for C++ 2.5.0-b.25
# Copyright (c) 2009-2023 Code Synthesis Tools CC.

2.3 第三步:安装 ODB 运行时库

ODB 运行时库是代码里实际调用的 API(比如odb::databaseodb::transaction),需要安装核心库、MySQL 驱动和 boost 支持库。

  1. 创建运行时库的构建目录并初始化:
# 回到odb-build目录
cd ..
# 初始化cc环境,指定安装路径和sudo权限
bpkg create -d libodb-gcc-N cc \
config.cxx=g++ \
config.cc.coptions=-O3 \
config.install.root=/usr/ \
config.install.sudo=sudo
  1. 添加 ODB 官方源并安装依赖库:
# 进入libodb-gcc-N目录
cd libodb-gcc-N
# 添加ODB的beta源
bpkg add https://pkg.cppget.org/1/beta
# 拉取最新包信息
bpkg fetch
# 安装核心库(libodb)
bpkg build libodb
# 安装MySQL驱动(libodb-mysql)
bpkg build libodb-mysql
# 安装boost支持库(处理boost日期等类型)
bpkg build libodb-boost
  1. 统一安装所有库:
bpkg install --all --recursive

2.4 第四步:配置 MySQL(必做)

ODB 需要 MySQL 环境,包括服务端、客户端开发包,以及字符集配置。

  1. 安装 MySQL 和开发包:
# 安装MySQL服务端
sudo apt install mysql-server
# 安装客户端开发包(编译时需要头文件和库)
sudo apt install -y libmysqlclient-dev
  1. 配置 MySQL 字符集(避免中文乱码):
# 编辑my.cnf(有哪个路径用哪个)
sudo vim /etc/my.cnf 或者 sudo vim /etc/mysql/my.cnf
# 在文件末尾添加以下内容:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
bind-address = 0.0.0.0
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值