|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
Здравствуйте. Прочитал Фаулера, в инете читал про это на этом и других форумах, но хоть убейте, не пойму как всё это "фаулеровское" (я понимаю, что это не Фаулер придумал, но он всё это как бы это популизировал чтоли :)) работать должно. Кэш - один на сессию (допустим одна БД - одна сессия), хранит данные, прочитанные из БД. При чтении из кэша он выдаёт не хранимый объект, а его копию. так? Единица работы (Unit of Work) - бизнес-транзакция. "связывает" бизнес-объекты и слйо доступа к данным. Читаем/сохраняем все объекты с помощью UoW. при чтении сначала ищем бизнес-объект в кэше, если он там есть, значит берём оттуда, иначе обращаемся в Mapper'у, который уже читает объект из БД (или это дело преобразователяч данных?). При сохранении удаляем объект из кэша (если вновь он понадобится, то получается уже будет читаться из БД) или заменяем его новым объектом (но что если в БД объект сохранится иначе. триггер там какой сработает или просто строка не уместится в отводимую длину)? Ну это вариант с оптимистической блокировкой в моем понимании. Преобразователь данных (Mapper) - чисто запросы к БД, т.е. select, insert, update, delete записей БД. Попросил у него запись с ИД = 5 и он полез в БД? Или в кэш должен именно маппер лезть, а не единица работы? Бизнес-объекты существуют только внутри конкретного Unit of Work? т.е. на одну запись одновременно может быть несколько бизнес-объектов в разных UoW? Как привязать бизнес-объекты к слою представления? Допустим нужно отобразить список объектов в ListView каком-нибудь. так вот в этом ListView элементы должны хранить ссылку на бизнес-объект (если бизнес-объекты существуют в пределаю UoW, то это я себе слабо представляю) или хранить идентификатор объекта (при перерисовке получается нужно искать объект. как-то расточительно) или какой-то третий вариант? Или мои понимания предмета совершенно неверны? ЗЫ. Про велосипедство, Hibernate и его "коллег" слышал, но уж очень хочется понять как это всё крутится, вертится внутри ... |
|||
:
Нравится:
Не нравится:
|
|||
04.12.2008, 20:08 |
|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
карбофос, кэш в жёстком диске знаем? Примерно то же самое. 2. Чем более производительные становятся СУБД и сети, тем менее нужны разнообразные прослойки, пулы. кэши и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 09:17 |
|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
меньше Фаулера читайте перед сном. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 09:38 |
|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
Petro123кэш в жёстком диске знаем? Примерно то же самое. При чтении файла, определяется наличие его в кэше, если есть, то сразу возвращается из кэша, если нет, то читается в кэш и так же возвращается из кэша? Ну там естественно не файлы, а секторы диска кэшируются/читаются, но это не суть важно в данном случае. Есть так же вариант с кэшированием записи, когда изменённые данные так же попадают в кэш и сообщается что они якобы мгновенно так уже записаны, хотя они пока в кэше находятся. А потом уже неспеша из кэша данные записываются на жесткий диск. Так?:) iscrafm меньше Фаулера читайте перед сном. Я это понял в процессе чтения, т.к. в голове сплошная каша образовалась, но теперь непонимание всего этого меня расстраивает и спится плохо :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 10:37 |
|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
карбофос, так. Есть ещё счётчик в ОС "частота попадания в кэш" который покажет - хорошая это фича или Г... Кэш много где есть, но это как бы "нижний уровень" для устранения "тонких мест". Сначала надо убедиться что эти тонкие места есть на прикладном уровне, чтобы не делать велосипедов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 10:52 |
|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
Так вот допустим кэш нужен. Он должен возвращаться ссылку на тот объект, который хранит или же делать копию объекта? Если он будет отдавать кэшированный объект, то при изменении последнего, в кэше будут храниться "грязные" данные. Или же разработчик сам выбирает какой тип блокировок нужен и проектирует кэш соответствующим образом? И особо интересно мне как быть с так называемыми бизнес-объектами (объектами бизнес-логики, предметной области). Единственные примеры, что я находил были в виде консольного приложения вида: 1. прочитать объект из БД 2. изменить его свойство. 3. вывести на экран 4. сохранить изменения в БД Тут то оно всё понятно, но как с ними работать в приложении с GUI? Я просто не понимаю роль этих объектов. Допустим нужно отобразить подобие файловой системы, хранящейся в БД, в виде дерева. Есть объекты: директория и файл. Заполнить дерево названиями папок/файлов - не проблема, но вот допустим как переименовать их? В узле дерева хранить идентификатор папки и переименовывать так: 1. прочитать папку с нужным идентификатором из БД 2. изменить её имя 3. сохранить изменения в БД т.е. создаём бизнес-объект на короткий промежуток времени исключительно для чтения/записи данных из/в БД? или же в узле дерева хранить сам бизнес-объект и тогда переименование папки будет: 1. изменить имя объекта предметной области (папки) 2. сохранить изменения в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 12:16 |
|
кэш, единица работы, бизнес-объект
|
|||
---|---|---|---|
#18+
карбофосТак вот допустим кэш нужен. Он должен возвращаться ссылку на тот объект, который хранит или же делать копию объекта? ===== копию Если он будет отдавать кэшированный объект, то при изменении последнего, в кэше будут храниться "грязные" данные. = да. Объект может сравниваться по метке времени - устарел или нет Или же разработчик сам выбирает какой тип блокировок нужен и проектирует кэш соответствующим образом? == блокировки при чём к кэшу? И особо интересно мне как быть с так называемыми бизнес-объектами (объектами бизнес-логики, предметной области). === для этого обычно делается ORM - поищите или почитайте ... |
|||
:
Нравится:
Не нравится:
|
|||
05.12.2008, 13:06 |
|
|
start [/forum/topic.php?fid=33&msg=35694805&tid=1548647]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
150ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 306ms |
total: | 539ms |
0 / 0 |