Оболочка C ++ / sqlite для очень простой сериализации классов? - PullRequest
7 голосов
/ 26 февраля 2011

Я ищу оболочку OO sqlite C ++, которая допускает квазипрозрачную сериализацию и десериализацию классов.

Рабочий процесс, который я имею в виду, выглядит следующим образом:

  1. определить запись класса с элементами данных
  2. Предоставить этот класс оболочке, которая создает подходящую таблицу

Простая сериализация и десериализация с помощью << и >> длявесь класс.

Реалистично ли это или я обязательно должен написать операторы сам?В идеале я не хотел бы беспокоиться о том, как данные попадают в базу данных и как они хранятся ... Простота использования - это мое главное беспокойство, а не гибкость или производительность.

Я ищу что-то похожее.

большое спасибо, Арик

Ответы [ 3 ]

4 голосов
/ 28 июня 2011

Нет простых инструментов C ++ ORM (объектно-реляционное отображение). Две библиотеки, которые я знаю об этом, облегчают процесс:

SOCI проще и в философии похож на буст, в то время как debea больше ориентируется на ORM.

Кстати, если SQLite / SQL / запросы не являются обязательными, вы можете использовать Boost serialization framework .

Только мои два цента

EDIT:

Что ж, учитывая почти несуществующие возможности отражения в C ++, мое скромное мнение состоит в том, что единственный способ сделать то, что вы хотите, - это использовать генератор кода. Учитывая, что не было приличного, простого в использовании синтаксического анализатора C ++ / lexer / ..., я не знаю ни одного распространенного инструмента, делающего это.

У кого-то, кого я знаю, была такая же проблема в течение нескольких лет. Наконец он нашел решение: он говорит мне, что clang теперь можно использовать (он компилирует boost), и что он использует его для генерации кода сериализации на основе маркеров в коде (он говорит мне, что есть поддержка для маркера в TR1, но я не эксперт). Это ценная обратная связь, и мои собственные попытки в этой области заставляют меня согласиться с решением.

3 голосов
/ 18 августа 2014

Quince - это библиотека, которая делает почти точно то, что просит спрашивающий. См. quince-lib.com .

(Полное раскрытие: я написал это.)

2 голосов
/ 18 мая 2017

Этот вопрос был задан некоторое время назад. С тех пор, Hiberlite был разработан, и стремится сделать почти то, что вы просите.

Он не поддерживает чтение / запись с << и >> (Boost.serialization делает, как уже упоминалось, но не хранит в БД SQL); однако, его использование кажется достаточно простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...