Data mapper

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Data mapper - шаблон проєктування взаємодії з базою даних. Призначений для зменшення взаємного впливу структури об`єкта та структури, яка реально зберігає дані об`єкта. Уперше був запропонований Мартіном Фаулером у 2003 році в книзі Patterns of Enterprise Application Architecture. Згідно з цим шаблоном інтерфейс об`єкта повинен містити методи CRUD, на противагу безпосередній взаємодії з базою даних.

Шаблон Data mapper - це прошарок доступу до бази даних, що забезпечує двосторонню конвертацію даних з об`єкта (в оперативній пам`яті) до бази даних, і з бази даних знов у об`єкт. Шаблон повністю відповідає своїй назві - він полягає у створенні мапи відповідності між полями властивостей об`єкта та полем у БД, у якому зберігається значення властивостей. Таким чином зміна структури в БД вимагає лише зміни самої мапи й не зачіпає основний код проєкту, так само програміст може змінити структуру об`єкта (в певних межах), залишивши базу даних незмінною.

Реалізації[ред. | ред. код]

Принцип реалізовано у численних фреймворках на різних мовах програмування.

Java/.Net[ред. | ред. код]

  • Фреймворк MyBatis 

PHP[ред. | ред. код]

  • Doctrine2 об`єктно-реляційне-відображення (ORM) та прошарок абстракції бази даних [1]

Python[ред. | ред. код]

Ruby[ред. | ред. код]

Реалізація[ред. | ред. код]

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);
	}
}

Див. також[ред. | ред. код]

Посилання[ред. | ред. код]


Примітки[ред. | ред. код]

  1. Doctrine2 and ActiveRecord – Doctrine2. Doctrine2. Архів оригіналу за 21 липень 2013. Процитовано 8 серпень 2016.