Про CRUD методы и Data Access Layer
От: MNZ Россия  
Дата: 26.01.06 10:08
Оценка:
Здравствуйте.

Хотелось бы уточнить у общественности, как принято организовывать DAL и BL слои приложения. Разумеется, я реализую CRUD методы для каждой сущности в DAL. Но также необходимы методы для, скажем, выборки по условию и поиска. Или, например, помимо метода GetById есть метод GetByName. Реализовывать их в BL? Но там те же запросы, что и в Read методе CRUD, только добавляется условие. Копировать текст запросов? Как-то это не так... Как обычно делают?

Спасибо.
... << RSDN@Home 1.2.0>>

02.09.06 00:22: Перенесено модератором из 'Базы данных' — IB
Re: Про CRUD методы и Data Access Layer
От: C0s Россия  
Дата: 26.01.06 15:14
Оценка: 2 (1)
Здравствуйте, MNZ, Вы писали:

MNZ>как принято организовывать DAL и BL слои приложения. Но также необходимы методы для выборки по условию и поиска. Копировать текст запросов? Как обычно делают?


проблема к СУБД отношения имеет мало, надо бы перенести обсуждение в архитектуру ПО

в общем случае, если представить, что если в приложении покрываются, скажем, 2 прикладные области, то при модульной организации приложения, каждая из них будет реализована отдельным независимым DAL.

дополнительные запросы, не выходящие за пределы своей прикладной области, надо бы реализовывать в соответствующем DAL

соединяющие запросы (я здесь не имею в виду именно SQL-запросы с джойнами таблиц первой и второй прикладной области, а именно нетривиальные выборки, необходимые для консолидирующего представления и/или использования разнообразной информации на протяжении какого-нибудь обрабатывающего алгоритма) могут реализовываться как в методах BL, так и в дополнительном DAL (имхо зависит от конкретного характера обрабатывающего алгоритма)... кажется, здесь сложно дать строгую и простую рекомендацию, но я бы всеми силами старался избежать введения зависимости между DAL разных прикладных областей
Re: Про CRUD методы и Data Access Layer
От: GlebZ Россия  
Дата: 26.01.06 18:38
Оценка: 2 (1)
Здравствуйте, MNZ, Вы писали:

MNZ>Хотелось бы уточнить у общественности, как принято организовывать DAL и BL слои приложения. Разумеется, я реализую CRUD методы для каждой сущности в DAL. Но также необходимы методы для, скажем, выборки по условию и поиска. Или, например, помимо метода GetById есть метод GetByName. Реализовывать их в BL? Но там те же запросы, что и в Read методе CRUD, только добавляется условие. Копировать текст запросов? Как-то это не так... Как обычно делают?


В данном случае возможно использование двух способов.
1. LCRUD, где L обозначает List. То есть получение некоторого списка с помощью какого-то условия(обычно это условие — подчиненность какому-то объекту). В данном случае стоит делать и различные дополнительные процедуры типа GetByName и e.t.c. Но естественно это делается не на уровне BL, а на уровне DAL. В BL аналогичная вещь может присутствовать если запросы идут с более верхнего уровня, и он обязан изолировать логику слоя DAL. Это дешевый путь, но весьма эффективный. Правда неуниверсальный.
2. Другие виды mapper'ов которые поддерживают работу с метаданными бизнес-объектов. В данном случае, можно построить генератор запросов. Некоторый вариант реализации уже описывал Re[20]: Несколько вопросов по Меппарам.
Автор: GlebZ
Дата: 20.05.05
.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Про CRUD методы и Data Access Layer
От: Аноним  
Дата: 01.09.06 13:01
Оценка:
Здравствуйте, MNZ, Вы писали:

MNZ>Здравствуйте.


MNZ>Хотелось бы уточнить у общественности, как принято организовывать DAL и BL слои приложения. Разумеется, я реализую CRUD методы для каждой сущности в DAL. Но также необходимы методы для, скажем, выборки по условию и поиска. Или, например, помимо метода GetById есть метод GetByName. Реализовывать их в BL? Но там те же запросы, что и в Read методе CRUD, только добавляется условие. Копировать текст запросов? Как-то это не так... Как обычно делают?


MNZ>Спасибо.


Какая платформа используется? Для .NET 2.0 можно так.
Re[2]: Про CRUD методы и Data Access Layer
От: MNZ Россия  
Дата: 07.09.06 09:50
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Какая платформа используется? Для .NET 2.0 можно так.


C++/Firebird
... << RSDN@Home 1.2.0 alpha rev. 655>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.