使用带有 C++ 的 DB 真是一团糟,当我转向 Java 以便能够使用统一的系统来抽象整个层(又名 Hibernate)时,这令人耳目一新。
有几个用于 DB 的 C++ 抽象层,但它们通常是特定于供应商的,并且只有一个包装真正 C API 的薄层。有没有人遇到过类似 C++ 的休眠或知道正在研究这个问题域的组或开源项目。
使用带有 C++ 的 DB 真是一团糟,当我转向 Java 以便能够使用统一的系统来抽象整个层(又名 Hibernate)时,这令人耳目一新。
有几个用于 DB 的 C++ 抽象层,但它们通常是特定于供应商的,并且只有一个包装真正 C API 的薄层。有没有人遇到过类似 C++ 的休眠或知道正在研究这个问题域的组或开源项目。
我感觉到你的痛苦。您将很快使用单独的库来进行数据库访问、XML 处理、线程以及应用程序通常需要的所有其他内容。出于这个原因,我经常使用 Qt,它提供了程序中经常需要的最常见的功能(数据库访问、XML 处理、线程、GUI 小部件等)。他们的 SQL 类相当不错,并且可以与许多数据库一起使用。但它不像许多对象关系映射器那样抽象 SQL。
我们开发了一个名为QHibernate的开源库。
QHibernate 是用于 C++ 和 Qt 框架的 Hibernate ORM(对象关系映射)端口。当前版本是概念工作的证明。它与 PostgreSQL 9.4 和 Qt 5.4.1 一起使用。
特征
您可以在此处找到一些详细信息、源代码和下载链接:QHibernate
现在有一个完全用 C++ 编写的 Hibernate 层。你可以在edwig/CXHibernate 的 github 上找到它。 它带有完整的书面文档。
如果您将 C++ 与 .Net 一起使用,请使用 nhibernate。2.0 与 hibernate 3.0 大致相同,并且非常健壮。
另一种方法是 C++ 对象 <-> xml 映射,如代码合成 xsd
我从不喜欢直接休眠/序列化方法,如果您需要更改类,它会破坏太多。