Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Паттерны Объектно-Реляционной логики Lazy Load , Identity Map ,Unit of Work кратко

Лекция



Привет, Вы узнаете о том , что такое паттерны , Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое паттерны , объектно-реляционной логики, lazy load , identity map, unit of work , настоятельно рекомендую прочитать все из категории Проектирование веб сайта или программного обеспечения.

  • Lazy Load (Ленивая загрузка)
  • Identity Map (Карта присутствия / Карта соответствия)
  • Unit of Work (Единица работы)

 

 

Lazy Load (Ленивая загрузка)

Паттерны Объектно-Реляционной логики Lazy Load , Identity Map ,Unit of Work

Паттерн проектирования Lazy Load

Описание Lazy Load

Объект, не содержит данных, но знает, где их взять.

Для загрузки данных из БД в память приложения удобно пользоваться загрузкой не только данных об объекте, но и о сопряженных с ним объектах. Это делает загрузку данных проще для разработчика: он просто использует объект, который, тем не менее вынужден загружать все данные в явном виде.

Но это ведет к случаям, когда будет загружаться огромное количество сопряженных объектов, что плохо скажется на производительности в случаях, когда эти данные реально не нужны.

Паттерн Lazy Load (Ленивая Загрузка) подразумевает отказ от загрузки дополнительных данных, когда в этом нет необходимости. Вместо этого ставится маркер о том, что данные не загружены и их надо загрузить в случае, если они понадобятся. Как известно, если Вы ленивы, то вы выигрываете в том случае, если дело, которое вы не делали на самом деле и не надо было делать.

Существует четыре основных варианта ленивой загрузки.

  • Lazy Initialization (Ленивая Инициализация) использует специальный макер (обычно null), чтобы пометить поле, как не загруженное. Об этом говорит сайт https://intellect.icu . При каждом обращении к полю проверяется значение маркера и, если значение поля не загружено - оно загружается.
  • Virtual Proxy (Виртуальный Прокси) - объект с таким же интерфейсом, как и настоящий объект. При первом обращении к методу объекта, виртуальный прокси загружает настоящий объект и перенаправляет выполнение.
  • Value Holder (Контейнер значения) - объект с методом getValue. Клиент вызывает метод getValue, чтобы получить реальный объект. getValue вызывает загрузку.
  • Ghost (Призрак) - объект без каких-либо данных. При первом обращении к его методу, призрак загружает все данные сразу.

 

 

Identity Map (Карта присутствия / Карта соответствия)

Паттерны Объектно-Реляционной логики Lazy Load , Identity Map ,Unit of Work

Паттерн проектирования Identity Map

Описание Identity Map

Обеспечивает однократную загрузку объекта, сохраняя данные об объекте в карте соответсвия. При обращении к объектам, ищет их в карте соответсвия.

Одна старая пословица постулирует, что человек с двумя часами никогда не знает, сколько сейчас времени. И если уж двое часов вносят путаницу, то с загрузкой объектов из БД может получиться гораздо большая путаница. Если разработчик не достаточно аккуратен, может получиться, что он загрузит данные из БД в два объекта. Потом, когда он сохранит их, получится путаница и конкуренция различных данных.

Более того, с этим связаны проблемы производительности. Когда дважды загружается одна и та же информация, увеличиваются затраты на передачу данных. Таким образом, отказ от загрузки одних и тех же данных дважды не только обеспечивает корректность информации, но и ускоряет работу приложения.

Паттерн Identity Map (Карта присутствия / Карта соответствия) хранит записи о всех объектах, которые были считаны из БД за время выполнения одного действия. Когда происходит обращение к объекту, проверяется карта соответствия (присутствия), чтобы узнать, загружен ли объект.

 

Unit of Work (Единица работы)

Паттерны Объектно-Реляционной логики Lazy Load , Identity Map ,Unit of Work

Паттерн проектирования Unit of Work

Описание Unit of Work

Обслуживает набор объектов, изменяемых в бизнес-транзакции (бизнес-действии) и управляет записью изменений и разрешением проблем конкуренции данных.

Когда необходимо писать и читать из БД, важно следить за тем, что вы изменили и если не изменили - не записывать данные в БД. Также необходимо вставлять данные о новых объектах и удалять данные о старых.

Можно записывать в БД каждое изменение объекта, но это приведет к большому количеству мелких запросов к БД, что закончится замедлением работы приложения. Более того, это требует держать открытую транзакцию все время работы приложения, что непрактично, если приложение обрабатывает несколько запросов одновременно. Ситуация еще хуже, если необходимо следить за чтением из и БД, чтобы избежать неконсистентного чтения.

Реализация паттерна Unit of Work следит за всеми действиями приложения, которые могут изменить БД в рамках одного бизнес-действия. Когда бизнес-действие завершается, Unit of Work выявляет все изменения и вносит их в БД.

 

 

Анализ данных, представленных в статье про паттерны , подтверждает эффективность применения современных технологий для обеспечения инновационного развития и улучшения качества жизни в различных сферах. Надеюсь, что теперь ты понял что такое паттерны , объектно-реляционной логики, lazy load , identity map, unit of work и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Проектирование веб сайта или программного обеспечения

Из статьи мы узнали кратко, но содержательно про паттерны
создано: 2017-07-31
обновлено: 2021-03-13
96



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Проектирование веб сайта или программного обеспечения

Термины: Проектирование веб сайта или программного обеспечения