Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.04.2011, 22:34
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
Сейчас будет вопрос из школьной программы :) Итак, разрабатывается ИС, где для работы с БД используется Data Mapper. Бизнес-логика основана на Domain Model. Пока нам нужны стандартные операции "создать", "отредактировать", "удалить" - вопросов нет. Но вот мне нужно получить некоторую агрегированную информацию об объектах и самый быстрый способ это сделать - простой запрос в БД. А как это все ляжет на вышеописанную архитектуру? Пример, чтобы было понятнее (пример вымышлен) Допустим есть: 1) класс Book - информация о книге - название, автор, количество страниц 2) класс BookMapper - маппер. содержит методы типа find(), save(), delete(). Теперь задача: узнать максимальное количество страниц в книгах. Для этого нужно послать запрос в БД "select max(количество_страниц) from книги". Но как это оформить? Дополнительный метод в маппере? Но вроде как это не его предназначение. Метод в классе Book? Тогда мы завязываемся на маппер, а по идее модель не должна ничего знать о БД. Так как быть? З.Ы. Или мне предлагается загрузить все книги маппером в оперативную память, а потом пробежаться по ним в цикле и найти максимум? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.04.2011, 00:10
|
|||
---|---|---|---|
|
|||
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
Pilot Но как это оформить? Дополнительный метод в маппере? Но вроде как это не его предназначение. Подмеченно очень точно. Назначение Mapper'a соверешенно в другом - преобразовать один объект в другой. В обычной школьной программе для CRUD применяют другой шаблон - Repository. В нем и прописывают все дополнительные методы, что многие считают большим недостатком данного подхода, тк невозможно сделать обобщенное решение ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.05.2011, 20:11
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
PilotНо вот мне нужно получить некоторую агрегированную информацию об объектах и самый быстрый способ это сделать - простой запрос в БД. А как это все ляжет на вышеописанную архитектуру? Сделать класс-обертку, которая проксить результат этого запроса. Некторые ORM могут сами кодогенерировать прокси-классы от производных хранимых процедур и функций, это очень удобно. Pilot1) класс Book - информация о книге - название, автор, количество страниц 2) класс BookMapper - маппер. содержит методы типа find(), save(), delete(). Как уже посоветовали - репозиторий. Как вариант, некоторые ORM по умолчанию кодогенерят свои репозитории для своих сущностей. PilotТеперь задача: узнать максимальное количество страниц в книгах. Для этого нужно послать запрос в БД "select max(количество_страниц) from книги". Но как это оформить? Дополнительный метод в маппере? Но вроде как это не его предназначение. Метод в классе Book? Тогда мы завязываемся на маппер, а по идее модель не должна ничего знать о БД. Так как быть? Не изобретать велосипед, а юзать готовые ORM. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.05.2011, 21:12
|
|||
---|---|---|---|
|
|||
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
MCУ, ты бы сам велосипеды не изобретал, давно пора хотя бы один букварь по паттернам осилить. Где ты прокси-классы в ORM нашел? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.05.2011, 21:24
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
А почему нельзя ввести понятие "Коллекция книг" или вообще "Универсум книг" и наделить его необходимыми свойствами? В т.ч., методами получения агрегатов, списков и отдельных элементов, например. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.05.2011, 21:46
|
|||
---|---|---|---|
|
|||
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
KewА почему нельзя ввести понятие "Коллекция книг" или вообще "Универсум книг" и наделить его необходимыми свойствами? В т.ч., методами получения агрегатов, списков и отдельных элементов, например. Очень даже можно. Active Record ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 00:29
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
Сева, ты бы лбом не давил на кирпичную кладь, как обычно, - а подумал бы сначала. Все классы в ORM - прокси ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 00:33
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
МСУ]Все классы в ORM - прокси но не все понимают, что такое прокси. Будь более снисходительным. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 01:34
|
|||
---|---|---|---|
|
|||
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
Еще один грамотей подтянулся. Умные книжки вы врядли осилите, хотя бы вики полистайте. Прокси - заместитель. Virtual proxy еще можно притянуть за уши к ленивой загрузке. А ORM имеют фасад(контекст в Linq/EF, сессия Hibernate), который скрывает за собой детали работы с БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 01:39
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
iПрокси - заместитель. вообще-то посредник, представитель... грамотей, блин ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 01:41
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
iORM имеют фасад ..., который скрывает за собой детали работы с БД. почитай о том, что такое прокси ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 02:03
|
|||
---|---|---|---|
|
|||
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
Внятной терминологии на русском нет, тк переводят такие же, как ты с МСУ. Дословно с английского - заместитель . Не читай русскую вики. Вот тебе другая статья Надеюсь, осилишь. Считать, что он подходит к ОRM может только ваша сладкая парочка ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 09:23
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
iВнятной терминологии на русском нет, тк переводят такие же, как ты с МСУ. Дословно с английского - заместитель . Не читай русскую вики. Вот тебе другая статья Надеюсь, осилишь. Считать, что он подходит к ОRM может только ваша сладкая парочка узнаваем: ссылки не в тему, помешательство на шаблонах и т.д. А почему ты не взял первое определение из своей же ссылки, основное, где прокси объясняется как посредник, агент, а взял какой-то бред про какого то заместителя? Потому что он неудобен для тебя и противоречит? Нужно было найти что-то про "заместителя", совершенно не в тему? И при чем здесь шаблон, ссылку на который ты привел, сам хоть понял, сынку? а это вообще шедеврально: СеваНе читай русскую вики перед ссылкой на русскую вики. спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 11:39
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
iscrafmМСУ]Все классы в ORM - прокси но не все понимают, что такое прокси. Будь более снисходительным. +1 :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.05.2011, 11:43
|
|||
---|---|---|---|
DataMapper, DomainModel - а куда другие запросы к БД? |
|||
#18+
По поводу русской вики поржал )) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=33&tablet=1&tid=1548050]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
135ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 11ms |
total: | 236ms |
0 / 0 |