8

我正在寻找一个允许类的准透明序列化和反序列化的 OO sqlite C++ 包装器。

我想到的工作流程如下:

  1. 用数据成员定义一个类记录
  2. 将此类提供给创建合适表的包装器

通过 << 和 >> 对整个类进行简单的序列化和反序列化。

这是现实的还是我必须自己编写运算符?理想情况下,我不想担心数据如何进入数据库以及如何存储......易用性是我主要关心的问题,而不是灵活性或性能。

我正在寻找与GAE 数据存储 python 接口类似的东西。

非常感谢, 阿里克

4

4 回答 4

4

没有简单的 C++ ORM(对象关系映射)工具。我所知道的可以简化流程的两个库是:

SOCI 更简单,在哲学上类似于 boost,而 debea 更面向 ORM。

顺便说一句,如果 SQLite / SQL / requests 不是强制性的,你可以使用Boost 序列化框架

只是我的两分钱

编辑:

好吧,鉴于几乎不存在 C++ 反射的可能性,我的拙见是,做你想做的事情的唯一方法是使用代码生成器。鉴于没有像样的、易于使用的 C++ 解析器/词法分析器/...,我知道没有一个广泛使用的工具可以做到这一点。

我认识的人多年来一直有同样的问题。他终于找到了一个解决方案:他告诉我clang现在可以使用(它编译boost),并且他使用它根据代码中的标记生成序列化代码(他告诉我TR1中支持标记,但是我不是专家)。这是很有价值的反馈,我自己在这个领域的尝试让我同意这个解决方案。

于 2011-06-28T11:03:38.180 回答
3

Quince 是一个库,几乎可以完全满足提问者的要求。请参阅quince-lib.com

(完全披露:我写的。)

于 2014-08-18T00:48:46.873 回答
2

这个问题是前一阵子问的。从那时起,Hiberlite得到了开发,并声称几乎可以完全满足您的要求。

它不支持使用 << 和 >> 进行读/写(Boost.serialization 支持,正如其他人所提到的,但它不存储在 SQL DB 中);但是,使用它似乎很容易。

于 2017-05-17T22:36:11.197 回答
1

试试sqlite_orm https://github.com/fnc12/sqlite_orm。它提供了你所需要的——将一个类映射到一个表,将类成员映射到列

于 2019-11-12T14:26:42.177 回答