Hibernate like layer for C++

14.5k views Asked by At

Using a DB with C++ is a real mess and it was refreshing when I moved to Java to be able to use a unified system to abstract the whole layer away (aka Hibernate).

There are a couple of C++ abstract layers for DB's out there but they are usually vendor specific and only a thin layer that wraps the real C API. Has anybody come across something more like hibernate for C++ or know of a group or open source project that is looking at this problem domain.

6

There are 6 answers

0
Vadim Ferderer On BEST ANSWER

I don't know of any C++ library like Hibernate, but certainly there are non-vendor specific libs: SOCI and DTL

0
ufukgun On

We developed an open source library named QHibernate.

QHibernate is a Hibernate ORM(Object Relation Mapping) port for C++ and Qt Framework. Current version is a proof of concept work. It is used with PostgreSQL 9.4 and Qt 5.4.1.

Features

  • Qt5
  • PostgreSQL
  • Class mapping xml
  • Class mapping xml
  • Hibernate configuration xml
  • one-to-many, one-to-one, many-to-one mappings

You can find some details, source and download links here: QHibernate

0
AudioBubble On

If you're using C++ with .Net, then use nhibernate. 2.0 is approximately the same as hibernate 3.0, and is extremely robust.

1
danieldk On

I feel your pain. You'll quickly be using separate libraries for database access, XML processing, threading, and everything else applications commonly need. For this reason I often use Qt, which provides most common functionality often need in programs (database access, XML processing, threading, GUI widgets, etc.). Their SQL classes are pretty decent and work with many databases. But it does not abstract SQL away like many object-relation mappers.

0
Edwig Huisman On

There is now a completely in C++ written Hibernate layer. You can find it at github at edwig/CXHibernate. It comes with full written documentation.

0
Martin Beckett On

Another approach is a C++ object <-> xml mapping like codesynthesis xsd
I never liked the direct hibernate/serialisation approach it breaks too much if you ever need to change the class.