-
Notifications
You must be signed in to change notification settings - Fork 20
ru_About
Инструмент YB.ORM разрабатывается чтобы упростить для программистов C++ создание приложений, оперирующих с реляционными базами данных. Объектно- реляционный маппер (Object-Relational Mapper, ORM) отображает таблицы базы данных в классы, а записи из таблиц - в объекты определенного языка программирования. Этот подход применим не во всех приложениях баз данных, но он хорошо зарекомендовал себя там, где требуется сложная логика и работа с транзакциями. Цели проекта YB.ORM: предоставить удобный объектно-реляционный маппер для программиста C++, сохранить высокую производительность языка C++, обеспечить максимальную переносимость кода между различными платформами, и обеспечить поддержку основных реляционных СУБД.
Типичный сценарий использования таков:
-
Опишите схему базы данных, т.е. таблицы и их колонки, а также связи между таблицами в простом XML формате.
-
Используя инструмент для генерации кода, создайте доменные классы C++ для таблиц (см. Tutorial1).
-
Добавьте в классы бизнес-логику приложения.
-
При изменении существующей схемы можно использовать тот же инструмент для генерации кода чтобы синхронизировать ранее созданные доменные классы со схемой.
-
Можно сформировать SQL скрипт чтобы наполнить пустую схему БД таблицами.
-
Теперь вы можете использовать доменные классы в связке с объектом Session чтобы:
-
создавать новые и удалять существующие объекты;
-
запрашивать объекты из базы данных с помощью объектного языка запросов (см. Tutorial3);
-
изменять существующие объекты, используя присваивание полям;
-
связывать и объекты друг с другом и разрывать связи, используя отношения (см. Tutorial2);
-
сериализовать объекты в виде XML и JSON.
-
Этот инструмент применяет многие идеи, изложенные в книге Мартина Фоулера "Шаблоны корпоративных приложений". Используются такие шаблоны проектирования как "Ленивая Загрузка" ("Lazy Load"), "Карта присутствия" ("Identity Map"), "Единица Работы" ("Unit of Work") и другие. На проект оказали влияние такие мощные ORM-системы как Hibernate для Java и особенно SQLAlchemy для Python. Некоторые детали внутреннего устройства тут: Internals.
На данный момент, инструмент YB.ORM работает в средах Linux, Mac OS X и Windows. Сборка проверялась компиляторами GCC, CLang, MinGW, MSVC 2013/2010/2008, см. Инструкции по сборке.
Вы можете собрать YB.ORM с вашим любимым тулкитом: Boost, Qt, или wxWidgets; при этом будут использоваться "родные" типы данных, такие как строки, дата и время, поддержка много-поточности, работа с XML и пр.
Тестировалась работа со следующими реляционными СУБД: MySQL, Oracle, SQLite, Firebird, Postgres. Для подключения к БД есть несколько вариантов:
-
драйверы ODBC
-
популярная библиотека C++ для баз данных SOCI
-
набор драйверов в составе Qt: QtSql
-
для SQLite доступен "родной" драйвер
Библиотека предоставляет возможность использовать пул подключений к БД. Подробности по этой ссылке: Подключение к БД.
Основная функциональность YB.ORM была протестирована на нескольких небольших проектах, и работает стабильно. Имейте в виду, что данный инструмент находится в разработке, API библиотеки может меняться между релизами. Некоторые интересные возможности пока находятся в планах (см. Планы на будущее).
Проект зародился в конце 2006 года как часть биллинговой системы для
онлайновой рекламы в компании Яндекс (http://www.yandex.ru/), в
первоначальной разработке участвовали Найденов Вячеслав (я) и Чмелев Сергей.
Аббревиатура "YB" означала Yandex.Balance, название биллинговой системы.
Сейчас проект YB.ORM не связан напрямую с компанией Яндекс. Исходный код был
опубликован под открытой лицензией в начале 2011 года, с тех пор он был
существенно переработан. Спасибо автору проекта tiny odbc
wrapper, на основе его кода был построен
первый пригодный к использованию SQL драйвер (класс OdbcDriver
). Также, я
хотел бы отметить вклад нескольких студентов Московского Государственного
Открытого Университета (МГОУ), где я иcпользовал этот программный код, как
наглядный пример. Список авторов:
-
Вячеслав Найденов, vaclav at yandex dot ru - основной разработчик
-
Сергей Чмелев, halty at yandex dash team dot ru - разработчик на ранней стадии
-
SqUe, squarious at gmail dot com - код tiodbc
-
Никита Буйвич, buyvich at gmail dot com - МГОУ
-
Вячеслав Фёдоров, funny dash story at yandex dot ru - МГОУ
-
Андрей Скобенков, andrey dot skobenkov at gmail dot com - МГОУ
Любая конструктивная критика, исправления и комментарии приветствуются!