AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.06.2008, 11:32   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Как правильно писать SQL-запросы
Цитата:
Многие считают, что везде, где можно использовать "чистый" SQL вместо объектно-ориентированного подхода, нужно его использовать. Это заблуждение.
http://habrahabr.ru/blog/sandbox/44132.html

А также http://www.citforum.ru/database/arti...l_refactoring/
__________________
полезное на axForum, github, vk, coub.
Старый 08.06.2008, 11:56   #2  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Многие считают, что везде, где можно использовать "чистый" SQL вместо объектно-ориентированного подхода, нужно его использовать. Это заблуждение.
Какое-то странное утверждение. Или я его не правильно понимаю.
Как пересекаются Sql запросы и объектно-ориентированного подход.
SQL используется для доступа к данным.
Объектно-ориентированного подход для хранения полученых с помощью sql данных.
Главное знать период жизни полученной информации.
Проблемы с запросами бывают в тот момент когда одна и таже информацию выбирается из бызы дважды. Это проблема.
К примеру один програмист делает какую нибудь модификацию, делает запрос получает данные. Потом другой программист делает другую модификацию и в соседнем методе по невнимательности может написать тот же запрос.
А вообще нужно проводить время от времени инвентаризацию кода.
Что-то упрощать, от чего-то отказываться.
Но ресурсы под это никто не даст.
Старый 08.06.2008, 12:30   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
Как пересекаются Sql запросы и объектно-ориентированного подход.
Никак.
В оригинале было про "чистые" SQL запросы и объектно ориентированный подход

Цитата:
Примерный вид решения на SQL:

SQLObject object = executeQuery (
"SELECT u.name user_name, dep.name dep_name/n" +
"FROM USERS u, DEPARTMENTS dep/n" +
" AND u.user_id = ?/n" +
" AND u.department_id = dep.department_id",
userID )

Примерный вид решения с использованием API:

User user = new User(userID);
Department department = user.getDepartment();

В чем преимущества первого решения: оно работает быстрее второго. В чем преимущество второго: оно более воспринимаемо человеком, и его намного легче поддерживать. Конечно, если этот код вызывается очень часто или разница во времени выполнения слишком большая, то следует использовать первый вариант. Во всех остальных случаях лучше взять второй, т. к. нужно думать о людях, а не о выигрыше миллисекунд.
__________________
полезное на axForum, github, vk, coub.
Старый 08.06.2008, 13:05   #4  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
У него же всё равно в getDepartment этот sql запрос сидит или в конструкторе new.
Просто постановку вопроса нужно подругому ставить.
Писать ли класс оболочку для этого запроса или нет? Нет не писать.
А вот класс оболочку для таблиц user и departament писать нужно. Может и не одну.
Если это важные таблицы. В идеале даже если не важные, но в реале так не бывает.
В Axapte много место где под таблицы создаются два класса.
Первый для некой выборки экземпляров какой-нибудь сущности и сохранения их для последующего пользования без повторного запроса, второй для работы с одним экземпляром этой сущности.
Старый 08.06.2008, 13:19   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от miklenew Посмотреть сообщение
У него же всё равно в getDepartment этот sql запрос сидит или в конструкторе new.
"Чистый" SQL предполагает отсутствие оболочек и один "оптимальный" запрос вместо нескольких (возможно более простых).

Цитата:
Сообщение от miklenew Посмотреть сообщение
Писать ли класс оболочку для этого запроса или нет? Нет не писать.
Почему это? Он и рассуждает на тему - писать запросы или пользоваться оболочками (возможно, не "оптимальными" в каждом конкретном случае)
__________________
полезное на axForum, github, vk, coub.
Старый 08.06.2008, 13:33   #6  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от mazzy Посмотреть сообщение
"Чистый" SQL предполагает отсутствие оболочек и один "оптимальный" запрос вместо нескольких (возможно более простых).
Теперь понял.
Тогда наверное всё зависит от количества записей.
При малых объёмах полюбому второй подход.
При больших первый. Тут уж выбирать не приходиться, когда тормоза пошли.
Цитата:
Сообщение от mazzy Посмотреть сообщение
Почему это?
Сложно сказать. Я бы не стал. Лучше бы нашёл класс который наиболее всего представляет данные таблицы и повесел бы статическим методом.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как правильно задавать технические вопросы Антон Солдатов Курилка 4 18.11.2008 20:20
Часто ли вы включаете частичу "не" в свои поисковые запросы? mazzy Обсуждение форума 2 12.03.2008 22:24
Отношения SQL.RU и mazzy kashperuk Курилка 3 07.06.2007 17:57
Производительность SQL 2005 vs. SQL 2000 anz Курилка 7 08.12.2006 15:24
Уважаемые отвественные за группы, проверьте запросы на присоединение mazzy Информация для участников 3 21.08.2006 22:40

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:05.