Бут Віталій Сергійович

Магістрант кафедри ПІ

Харківський національний університет радіоелектроніки

м. Харків, Україна

vitalii.but @nure.ua

 

Науковий керівник

Голян Віра Володимирівна

К. т. н., доцент, доцент кафедри програмної інженерії

Харківський національний університет радіоелектроніки

м. Харків, Україна

Ця електронна адреса захищена від спам-ботів. вам потрібно увімкнути JavaScript, щоб побачити її.

 

 Вступ/Introductions ORM (eng. Object-Relation Mapping) - технологія програмування, яка зв'язує бази даних з концепціями об'єктно-орієнтованих мов програмування, створюючи «віртуальну об'єктну базу даних».

 Ключові слова: Реляційні БД, ORM бібліотеки, СУБД, PHP

 

 При створенні програмного забезпечення за допомогою об'єктно підходу, виникає завдання довготривалого зберігання об'єктів. Використання реляційної БД для зберігання об'єктно даних призводить до семантичного розриву між способами обробки об'єктів і їх зберігання [1]. програмісти змушені використовувати різні концепції при розробці бізнес логіки додатки (об'єктно-орієнтований підхід) і при взаємодії з сховищем об'єктів (реляційна модель) [2-4]. Перехід між концепціями відбувається кожного разу при зверненні до БД, що призводить або до багаторазового дублювання коду, або до створення бібліотеки «Прошарку» між базою даних і додатком.

 Мета роботи./Aim. Метою даної роботи є використання ORM бібліотек, що приводить до:

  1. Зниження кількості помилок при перетвореннях даних між реляційної та об'єктної моделями.
  2. Поділ логіки програми та логіки зберігання даних.
  3. Незалежність коду програми від конкретної реалізації СУБД.
  4. Зниження ризиків порушення цілісності даних.
  5. Підвищення безпеки роботи з даними.
  6. Зменшення розмірів коду програми.

 Досягнення цілей призводить до необхідності вирішення наступних завдань:

  1. по об'єктної моделі згенерувати схему реляційної бази даних;
  2. підтримка будь-якої реляційної бази даних;
  3. опис об'єктної моделі, типів полів, асоціацій;
  4. завантаження об'єктів по первинному ключу;
  5. виконання складених програмістом SQL запитів;
  6. надання механізмів опису відображень повернутих даних в об'єкти;
  7. автоматична генерація SQL запитів;
  8. захист бази даних від атак виду SQL-injection;
  9. рання / відкладена завантаження даних.

 Матеріали і методи./Materials and methods. В основу архітектури розробляємої бібліотеки Granula ORM покладено патерн Active Record. Код бібліотеки слідує стандартам оформлення коду PSR-1 і стандарту автозавантаження класів PSR-4.18. Мінімально необхідна версія PHP для роботи бібліотеки - 5.5. Бібліотека використовує безліч нововведень, що з'явилися в останніх версіях PHP [5], такі як пізнє статичне зв'язування, генератори і багато іншого.

 Для управління схемою бази даних використовується бібліотека Doctrine DBAL. Опис схеми можна зробити двома різними способами:

  1. Перший спосіб вимагає, щоб об'єкти бізнес-логіки реалізовували статичний метод describe (Granula \ Meta). У даний метод передається екземпляр класу Granula \ Meta, який і є описом мета даних об'єктної моделі і схеми бази даних.
  2. Другий спосіб використовує рефлексію класів PHP [6]. Бібліотека Granula

 ORM аналізує назви полів, коментарі до них, і виконує побудова мета даних схеми Granula \ Meta, як якщо б вони були описані в методі describe.

 Висновки./Conclusions. В результаті у роботі реалізована бібліотека Granula ORM на PHP, що володіє наступними перевагами, в порівнянні з найближчими аналогами:

  1. Простота використання;
  2. Швидкість вивчення;
  3. Досить широка функціональність;
  4. Дотримання стандартів PSR;

 У бібліотеці реалізовані наступні можливості:

  1. Автоматична генерація схеми БД;
  2. Два типи конфігурації об'єктної моделі: DocBlock і PHP;
  3. API для роботи з об'єктною моделлю;
  4. API для роботи з будівником запитів;
  5. Перетворення типів даних;
  6. Асоціації «один до одного» і «один до багатьох»;

 На даний момент бібліотека Granula ORM доступна на GitHub за адресою https://github.com/elfet/granula і успішно використовується в наступних проектах:

  1. Веб-чат ElfChat: http://elfchat.net
  2. Магазин ElfChat.

 

Список використаної літератури

1. R. Johnson, J2EE Design and Development, Wrox, 2002, pp. 255-256. 

2. S. D. U. Suzanne W. Dietrich, Fundamentals of Object Databases: ObjectOriented and Object-Relational Design, Morgan & Claypool Publishers, 2011, pp. 66-100. 

3. M. Fowler, Patterns of Enterprise Application Architecture, Addison-Wesley, 2002. 

4. K. Dunglas, Persistence in PHP with Doctrine ORM, Packt Publishing, 2013. 

5. «PHP: Reflection,» [Електронний ресурс]. – Режим доступу:   Available:http://www.php.net/manual/ru/book.reflection.php.