Die Verwendung einer DB mit C ++ ist ein echtes Durcheinander und es war erfrischend, als ich nach Java umzog, um ein einheitliches System zu verwenden, um die ganze Schicht wegzuspulen (aka Hibernate).
Es gibt ein paar abstrakte C ++ - Schichten für DBs, aber sie sind normalerweise herstellerspezifisch und nur eine dünne Schicht, die die echte C-API umhüllt. Hat irgendjemand etwas eher wie Hibernate für C ++ oder wissen von einer Gruppe oder einem Open-Source-Projekt, die diese Problemdomäne sucht.
Ich fühle deinen Schmerz. Sie werden schnell separate Bibliotheken für den Datenbankzugriff, die XML-Verarbeitung, das Threading und alle anderen Anwendungen, die häufig benötigt werden, verwenden. Aus diesem Grund benutze ich oft Qt, das die häufigste Funktionalität bietet, die oft in Programmen benötigt wird (Datenbankzugriff, XML-Verarbeitung, Threading, GUI-Widgets usw.). Ihre SQL-Klassen sind ziemlich anständig und arbeiten mit vielen Datenbanken. Aber es abstrahiert SQL nicht wie viele Object-Relation-Mapper.
Wir haben eine Open-Source-Bibliothek mit dem Namen QHibernate entwickelt.
QHibernate ist ein Hibernate ORM-Port (Object Relation Mapping) für C ++ und Qt Framework. Aktuelle Version ist eine Proof of Concept-Arbeit. Es wird mit PostgreSQL 9.4 und Qt 5.4.1 verwendet.
Funktionen
Sie können einige Details, Quellen und Download-Links hier finden: QHibernate
Wenn Sie C ++ mit .Net verwenden, verwenden Sie nhibernate. 2.0 entspricht in etwa dem Hibernate 3.0 und ist extrem robust.
Ein anderer Ansatz ist ein C ++ - Objekt & lt; - & gt; XML-Mapping wie Codesynthese xsd Ich mochte nie den direkten Hibernate / Serialisierungs-Ansatz, den es zu viel bricht, wenn Sie jemals die Klasse ändern müssen.
Tags und Links c++ hibernate persistence freeze-thaw