Delphi.Spring4D.Marshmallow

Открыл для себя потрясающий ORM framework Marshmallow, который является частью библиотеки Spring4D и работает с его коллекциями.

Вообще, надо сказать, что такие вещи, как ORM призваны сокращать время разработки и создавать код более высокой абстракции. Если, скажем, понадобится переехать на другой SQL сервер, то сделать это будет явно проще, заменив адаптеры баз данных, а  не переписывая весь код.

Я основывал данную статью на официальном wiki проекта. И вот, что интересного получилось.

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

Подключение идет по ODBC, я экспериментировал с MySQL, соответственно скачал MySQL Connector/ ODBC.

Сначала нужно создать ODBC в Windows, причем в Win 10 есть 32 битная версия и 64 битная версия. Сработала 32 битная версия, чтобы аккаунт появился в CodeGenerator.

Далее, в CodeGenerator можно идти 2 путями – выбирать поставщика данных, я выбрал

На след. вкладке выбираем источник данных и заполняем поля базы данных.

В результате у нас формируется строка соединения, у меня она получилась такой

Далее, жмем на Connect и наблюдаем таблицы БД, которые удалось вытащить из БД,  также нужно указать каталог, куда будут выгружаться модели БД в виде pas файлов, вот что у нас получилось на выходе

Здесь надо сказать, что было пара лишних запятых, но я их убрал и код скомпилировался. Далее, посмотрим что умеет фрэймворк

Подключение к БД через FireDAC

Подключение фрэймворка к соединению происходит примерно так…

Далее, я набросал небольшой пример, выглядит он так…

Все эти методы реализованы на высоком уровне абстракции, посмотрим как это выглядит

Create через Save

Если заглянуть в Save, то выглядит это так…

То есть фрэймворк пытается определить, есть ли такая запись в таблице.

Create через Insert

Update

Delete

Выполнение SQL запроса, возвращающего результат

SingleOrDefault

FindOne

ListOfCustomers

Nullable

FindAll

Транзакции

Создание критериев запроса

Полный код модуля

 

This entry was posted in Delphi. Bookmark the permalink.