- •Оглавление
- •Вопросы к экзамену по дисциплине «дги. Шаблоны проектирования»
- •1 Adapter
- •3 Bridge
- •4 Decorator
- •5 Proxy, Composite Proxy
- •Composite
- •6. Lazy Initialization, Singleton lazy Initialization
- •Singleton
- •7 Object Pool
- •8 Prototype
- •9 Builder
- •10 Factory Method
- •11 Abstract Factory
- •12 Command
- •13 Strategy
- •14 Observer
- •15 Iterator
- •16 Chain of responsibility
- •17 Mediator
- •18 Template Method
- •19 Active Record
- •20 Unit of Work
- •21 Lazy load
- •22 Identity Map
- •23 Data Access Objects
22 Identity Map
Задача Требуется гарантировать, что каждый объект будет загружен из базы данных только один раз.
Решение Создать специальную коллекцию обьектов, загруженных из базы данных в пределах одной бизнес - транзакции. Таким образом, при получении запроса можно просмотреть эту коллекцию в поисках нужного объекта.
Предотвращение повторных загрузок позволяет избежать ошибок и повышает производительность системы.
Одна старая пословица постулирует, что человек с двумя часами никогда не знает, сколько сейчас времени. И если уж двое часов вносят путаницу, то с загрузкой объектов из БД может получиться гораздо большая путаница. Если разработчик не достаточно аккуратен, может получиться, что он загрузит данные из БД в два объекта. Потом, когда он сохранит их, получится путаница и конкуренция различных данных.
Более того, с этим связаны проблемы производительности. Когда дважды загружается одна и та же информация, увеличиваются затраты на передачу данных. Таким образом, загрузка одних и тех же данных дважды не только обеспечивает корректность информации, но и ускоряет работу приложения.
Паттерн Identity Map (Карта присутствия / Карта соответствия) хранит записи о всех объектах, которые были считаны из БД за время выполнения одного действия. Когда происходит обращение к объекту, проверяется карта соответствия (присутствия), чтобы узнать, загружен ли объект.
23 Data Access Objects
Data access object (DAO) — это объект, который предоставляет абстрактный интерфейс к какому-либо типу базы данных или механизму хранения. Определённые возможности предоставляются независимо от того, какой механизм хранения используется и без необходимости специальным образом соответствовать этому механизму хранения. Этот шаблон проектирования применим ко множеству языков программирования, большинству программного обеспечения, нуждающемуся в хранении информации и к большей части баз данных, но традиционно этот шаблон связывают с приложениями на платформе Java.
Решение
Используйте Data Access Object (DAO) для абстрагирования и инкапсулирования доступа к источнику данных. DAO управляет соединением с источником данных для получения и записи данных.
Особенности DAO:
Разрешает прозрачность
Облегчает миграцию
Уменьшает сложность кода в бизнес-объектах
Централизует весь доступ к данным в отдельном уровне
Добавляет дополнительный уровень
Требуется разработка иерархии классов