powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / кэш, единица работы, бизнес-объект
8 сообщений из 8, страница 1 из 1
кэш, единица работы, бизнес-объект
    #35694805
карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Прочитал Фаулера, в инете читал про это на этом и других форумах, но хоть убейте, не пойму как всё это "фаулеровское" (я понимаю, что это не Фаулер придумал, но он всё это как бы это популизировал чтоли :)) работать должно.

Кэш - один на сессию (допустим одна БД - одна сессия), хранит данные, прочитанные из БД. При чтении из кэша он выдаёт не хранимый объект, а его копию. так?

Единица работы (Unit of Work) - бизнес-транзакция. "связывает" бизнес-объекты и слйо доступа к данным. Читаем/сохраняем все объекты с помощью UoW. при чтении сначала ищем бизнес-объект в кэше, если он там есть, значит берём оттуда, иначе обращаемся в Mapper'у, который уже читает объект из БД (или это дело преобразователяч данных?). При сохранении удаляем объект из кэша (если вновь он понадобится, то получается уже будет читаться из БД) или заменяем его новым объектом (но что если в БД объект сохранится иначе. триггер там какой сработает или просто строка не уместится в отводимую длину)? Ну это вариант с оптимистической блокировкой в моем понимании.

Преобразователь данных (Mapper) - чисто запросы к БД, т.е. select, insert, update, delete записей БД. Попросил у него запись с ИД = 5 и он полез в БД? Или в кэш должен именно маппер лезть, а не единица работы?

Бизнес-объекты существуют только внутри конкретного Unit of Work? т.е. на одну запись одновременно может быть несколько бизнес-объектов в разных UoW?

Как привязать бизнес-объекты к слою представления? Допустим нужно отобразить список объектов в ListView каком-нибудь. так вот в этом ListView элементы должны хранить ссылку на бизнес-объект (если бизнес-объекты существуют в пределаю UoW, то это я себе слабо представляю) или хранить идентификатор объекта (при перерисовке получается нужно искать объект. как-то расточительно) или какой-то третий вариант?

Или мои понимания предмета совершенно неверны?

ЗЫ. Про велосипедство, Hibernate и его "коллег" слышал, но уж очень хочется понять как это всё крутится, вертится внутри
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35695236
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
карбофос,

кэш в жёстком диске знаем? Примерно то же самое.
2. Чем более производительные становятся СУБД и сети, тем менее нужны разнообразные прослойки, пулы. кэши и т.д.
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35695273
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
меньше Фаулера читайте перед сном.
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35695449
карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123кэш в жёстком диске знаем? Примерно то же самое.

При чтении файла, определяется наличие его в кэше, если есть, то сразу возвращается из кэша, если нет, то читается в кэш и так же возвращается из кэша? Ну там естественно не файлы, а секторы диска кэшируются/читаются, но это не суть важно в данном случае.
Есть так же вариант с кэшированием записи, когда изменённые данные так же попадают в кэш и сообщается что они якобы мгновенно так уже записаны, хотя они пока в кэше находятся. А потом уже неспеша из кэша данные записываются на жесткий диск. Так?:)

iscrafm
меньше Фаулера читайте перед сном.

Я это понял в процессе чтения, т.к. в голове сплошная каша образовалась, но теперь непонимание всего этого меня расстраивает и спится плохо :)
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35695491
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
карбофос,
так. Есть ещё счётчик в ОС "частота попадания в кэш" который покажет - хорошая это фича или Г...
Кэш много где есть, но это как бы "нижний уровень" для устранения "тонких мест".
Сначала надо убедиться что эти тонкие места есть на прикладном уровне, чтобы не делать велосипедов.
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35695786
карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так вот допустим кэш нужен. Он должен возвращаться ссылку на тот объект, который хранит или же делать копию объекта? Если он будет отдавать кэшированный объект, то при изменении последнего, в кэше будут храниться "грязные" данные. Или же разработчик сам выбирает какой тип блокировок нужен и проектирует кэш соответствующим образом?

И особо интересно мне как быть с так называемыми бизнес-объектами (объектами бизнес-логики, предметной области).
Единственные примеры, что я находил были в виде консольного приложения вида:

1. прочитать объект из БД
2. изменить его свойство.
3. вывести на экран
4. сохранить изменения в БД

Тут то оно всё понятно, но как с ними работать в приложении с GUI? Я просто не понимаю роль этих объектов.

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

Заполнить дерево названиями папок/файлов - не проблема, но вот допустим как переименовать их?
В узле дерева хранить идентификатор папки и переименовывать так:
1. прочитать папку с нужным идентификатором из БД
2. изменить её имя
3. сохранить изменения в БД

т.е. создаём бизнес-объект на короткий промежуток времени исключительно для чтения/записи данных из/в БД?

или же в узле дерева хранить сам бизнес-объект и тогда переименование папки будет:
1. изменить имя объекта предметной области (папки)
2. сохранить изменения в БД
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35695963
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
карбофосТак вот допустим кэш нужен. Он должен возвращаться ссылку на тот объект, который хранит или же делать копию объекта?

===== копию

Если он будет отдавать кэшированный объект, то при изменении последнего, в кэше будут храниться "грязные" данные.

= да. Объект может сравниваться по метке времени - устарел или нет

Или же разработчик сам выбирает какой тип блокировок нужен и проектирует кэш соответствующим образом?

== блокировки при чём к кэшу?

И особо интересно мне как быть с так называемыми бизнес-объектами (объектами бизнес-логики, предметной области).

=== для этого обычно делается ORM - поищите или почитайте
...
Рейтинг: 0 / 0
кэш, единица работы, бизнес-объект
    #35696182
карбофос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получасовой сон поставил все точки над и.
Petro123, спасибо за помощь :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / кэш, единица работы, бизнес-объект
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]