Data mapper — шаблон проєктування взаємодії з базою даних. Призначений для зменшення взаємного впливу структури об'єкта та структури, яка реально зберігає дані об'єкта. Уперше був запропонований Мартіном Фаулером у 2003 році в книзі Patterns of Enterprise Application Architecture. Згідно з цим шаблоном інтерфейс об'єкта повинен містити методи CRUD, на противагу безпосередній взаємодії з базою даних.
Шаблон Data mapper — це прошарок доступу до бази даних, що забезпечує двосторонню конвертацію даних з об'єкта (в оперативній пам'яті) до бази даних, і з бази даних знов у об'єкт. Шаблон повністю відповідає своїй назві — він полягає у створенні мапи відповідності між полями властивостей об'єкта та полем у БД, у якому зберігається значення властивостей. Таким чином зміна структури в БД вимагає лише зміни самої мапи й не зачіпає основний код проєкту, так само програміст може змінити структуру об'єкта (в певних межах), залишивши базу даних незмінною.
Реалізації
Принцип реалізовано у численних фреймворках на різних мовах програмування.
Java/.Net
- Фреймворк MyBatis
PHP
- Doctrine2 об'єктно-реляційне-відображення (ORM) та прошарок абстракції бази даних
Python
- Бібліотека SQLAlchemy
Ruby
- Ruby Object Mapper (ROM) [Архівовано 24 лютого 2021 у Wayback Machine.], також відомий як DataMapper 2
Реалізація
public class Customer { public int ID { get; set; } public string Name { get; set; } public Customer(int id, string name) { ID = id; Name = name; } } public class CustomerMapper { public Customer GetByID(int id) { Db db = ...; var record = db.ReadUser(id); return new Customer(record.id, record.name); } public void Save(Customer customer) { // враховуємо те що структура об'єкта та його представлення у сховищі можуть відрізнятись ... } public void Delete(int id) { Db db = ...; db.Delete(id); } }
Див. також
Посилання
- Data Mapper [Архівовано 18 серпня 2020 у Wayback Machine.]
Примітки
- Doctrine2 and ActiveRecord – Doctrine2. Doctrine2. Архів оригіналу за 21 липень 2013. Процитовано 8 серпень 2016. [Архівовано 2013-07-21 у Wayback Machine.]
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Data mapper shablon proyektuvannya vzayemodiyi z bazoyu danih Priznachenij dlya zmenshennya vzayemnogo vplivu strukturi ob yekta ta strukturi yaka realno zberigaye dani ob yekta Upershe buv zaproponovanij Martinom Faulerom u 2003 roci v knizi Patterns of Enterprise Application Architecture Zgidno z cim shablonom interfejs ob yekta povinen mistiti metodi CRUD na protivagu bezposerednij vzayemodiyi z bazoyu danih Shablon Data mapper ce prosharok dostupu do bazi danih sho zabezpechuye dvostoronnyu konvertaciyu danih z ob yekta v operativnij pam yati do bazi danih i z bazi danih znov u ob yekt Shablon povnistyu vidpovidaye svoyij nazvi vin polyagaye u stvorenni mapi vidpovidnosti mizh polyami vlastivostej ob yekta ta polem u BD u yakomu zberigayetsya znachennya vlastivostej Takim chinom zmina strukturi v BD vimagaye lishe zmini samoyi mapi j ne zachipaye osnovnij kod proyektu tak samo programist mozhe zminiti strukturu ob yekta v pevnih mezhah zalishivshi bazu danih nezminnoyu Zmist 1 Realizaciyi 1 1 Java Net 1 2 PHP 1 3 Python 1 4 Ruby 2 Realizaciya 3 Div takozh 4 Posilannya 5 PrimitkiRealizaciyired Princip realizovano u chislennih frejmvorkah na riznih movah programuvannya Java Netred Frejmvork MyBatis PHPred Doctrine2 ob yektno relyacijne vidobrazhennya ORM ta prosharok abstrakciyi bazi danih 1 Pythonred Biblioteka SQLAlchemy Rubyred Ruby Object Mapper ROM Arhivovano 24 lyutogo 2021 u Wayback Machine takozh vidomij yak DataMapper 2Realizaciyared public class Customer public int ID get set public string Name get set public Customer int id string name ID id Name name public class CustomerMapper public Customer GetByID int id Db db var record db ReadUser id return new Customer record id record name public void Save Customer customer vrahovuyemo te sho struktura ob yekta ta jogo predstavlennya u shovishi mozhut vidriznyatis public void Delete int id Db db db Delete id Div takozhred Data access object Active record pattern Object relational mappingPosilannyared Data Mapper Arhivovano 18 serpnya 2020 u Wayback Machine Primitkired Doctrine2 and ActiveRecord Doctrine2 Doctrine2 Arhiv originalu za 21 lipen 2013 Procitovano 8 serpen 2016 Arhivovano 2013 07 21 u Wayback Machine Otrimano z https uk wikipedia org w index php title Data mapper amp oldid 43992147