-
Notifications
You must be signed in to change notification settings - Fork 20
/
README.rus
97 lines (82 loc) · 7.85 KB
/
README.rus
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
О ПРОЕКТЕ
Инструмент YB.ORM разрабатывается чтобы упростить для программистов C++
создание приложений, оперирующих с реляционными базами данных.
Объектно-реляционный маппер (Object-Relational Mapper, ORM) отображает таблицы
базы данных в классы, а записи из таблиц - в объекты определенного языка
программирования. Этот подход применим не во всех приложениях баз данных, но
он хорошо зарекомендовал себя там, где требуется сложная логика и работа с
транзакциями. Цели проекта YB.ORM: предоставить удобный объектно-реляционный
маппер для программиста C++, сохранить высокую производительность языка C++,
обеспечить максимальную переносимость кода между различными платформами, и
обеспечить поддержку основных реляционных СУБД.
Типичный сценарий использования таков:
* Опишите схему базы данных, т.е. таблицы и их колонки, а также связи между
таблицами в простом XML формате (см. doc/XmlFormat.ru.html).
* Используя инструмент для генерации кода, создайте доменные классы C++ для
таблиц (см. doc/Tutorial1.ru.html).
* Добавьте в классы бизнес-логику приложения.
* При изменении существующей схемы можно использовать тот же инструмент для
генерации кода чтобы синхронизировать ранее созданные доменные классы со
схемой.
* Можно сформировать SQL скрипт чтобы наполнить пустую схему БД таблицами.
* Теперь вы можете использовать доменные классы в связке с объектом Session
чтобы:
+ создавать новые и удалять существующие объекты;
+ запрашивать объекты из базы данных с помощью объектного языка запросов
(см. doc/Tutorial3.ru.html);
+ изменять существующие объекты, используя присваивание полям;
+ связывать и объекты друг с другом и разрывать связи, используя
отношения (см. doc/Tutorial2.ru.html);
+ сериализовать объекты в виде XML и JSON.
Этот инструмент применяет многие идеи, изложенные в книге Мартина Фоулера
"Шаблоны корпоративных приложений". Используются такие шаблоны проектирования
как "Ленивая Загрузка" ("Lazy Load"), "Карта присутствия" ("Identity Map"),
"Единица Работы" ("Unit of Work") и другие. На проект оказали влияние такие
мощные ORM-системы как Hibernate (http://www.hibernate.org/) для Java и
особенно SQLAlchemy (http://www.sqlalchemy.org/) для Python.
Некоторые детали внутреннего устройства тут: doc/Internals.ru.html.
ТЕКУЩИЙ СТАТУС
На данный момент, инструмент YB.ORM работает в средах Linux, Mac OS X и
Windows. Сборка проверялась компиляторами GCC, CLang, MinGW, MSVC 2008/2010, а
также Borland C++ Builder, см. Инструкции по сборке (doc/Build.ru.html).
Вы можете собрать YB.ORM с вашим любимым тулкитом: Boost, Qt, или wxWidgets;
при этом будут использоваться "родные" типы данных, такие как строки, дата и
время, поддержка много-поточности, работа с XML и пр.
Тестировалась работа со следующими реляционными СУБД: MySQL, Oracle, SQLite,
Firebird, Postgres. Для подключения к БД есть несколько вариантов:
* драйверы ODBC
* популярная библиотека C++ для баз данных SOCI
(http://soci.sourceforge.net/)
* набор драйверов в составе Qt: QtSql
* для SQLite доступен "родной" драйвер
Библиотека предоставляет возможность использовать пул подключений к БД.
Подробности по этой ссылке: Подключение к БД (doc/SqlDriver.ru.html).
Основная функциональность YB.ORM была протестирована на нескольких небольших
проектах, и работает стабильно. Имейте в виду, что данный инструмент находится
в разработке, API библиотеки может меняться между релизами. Некоторые
интересные возможности пока находятся в планах (см. Планы на будущее:
doc/ToDo.ru.html).
ОБ АВТОРАХ
Проект зародился в конце 2006 года как часть биллинговой системы для
онлайновой рекламы в компании Яндекс (http://www.yandex.ru/), в первоначальной
разработке участвовали Найденов Вячеслав (я) и Чмелев Сергей. Аббревиатура
"YB" означала Yandex.Balance, название биллинговой системы. Сейчас проект
YB.ORM не связан напрямую с компанией Яндекс. Исходный код был опубликован под
открытой лицензией в начале 2011 года, с тех пор он был существенно
переработан. Спасибо автору проекта tiny odbc wrapper
(http://code.google.com/p/tiodbc/), на основе его кода был построен первый
пригодный к использованию 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 - МГОУ
Любая конструктивная критика, исправления и комментарии приветствуются!
--
Вячеслав Найденов
18 июня 2013