oos 0.2.1 发布,这是个 bug 修复版本,修复了 Ubuntu 13.10 的构建问题;移除了不必要的代码;改进了错误处理。
OOS 是一个 C++ 的 ORM 框架。旨在封装所有数据库后端功能,并对开发者提供统一的访问 API。使用 OOS 我们不需要了解后端数据库的类型和 SQL 语句,提供类 STL 的 API 和所有持久化对象的容器。
特性:
封装所有数据库后端
封装了 SQL 语句和数据库结构
为所有对象提供一个容器
类 STL 接口
简洁直接的设计
支持事务处理
内部引用计数机制
可用于过滤的简单表达式
支持的数据库: SQLite, MySQL
支持操作系统:Windows, Linux
无需依赖其他第三方库
易用
示例代码:
#include "object/object_ptr.hpp"
#include "database/session.hpp"
#include "database/transaction.hpp"
#include <exception>
oos::session db(ostore, "sqlite://person.db");
db.create();
typedef oos::object_ptr<person> person_ptr;
// insert object
person_ptr p = db.insert(new person("Theo"));
oos::transaction tr(db);
// start transaction
try {
tr.begin();
ostore.insert(new person("George"));
ostore.insert(new person("Jane"));
ostore.insert(new person("Tim"));
ostore.insert(new person("Walter"));
tr.commit();
} catch (std::exception&) {
// an error occurred: do rollback
tr.rollback();
}
引用来自“魏曼奇”的评论
我也需要一个C++的ORM,同时能访问原生SQL的接口也需要。
这个ORM的问题是,现在支持的DB类型太少了。起码还应支持PQ,Oracle、MS SQL、DB2这些主流RDBMS。
这个ORM的问题是,现在支持的DB类型太少了。起码还应支持PQ,Oracle、MS SQL、DB2这些主流RDBMS。