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