19.08.2010, 19:12
|
#9
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Мне лично Query больше нравится тем, что: - можно разбить логику построения запроса на несколько методов, а их - выборочно перекрывать в различных классах-наследниках; для while select нужно либо переписывать запрос целиком, либо в базовом классе предусматривать все возможные условия в запросе и цеплять их тем способом, который был представлен (!flag || condition), что не прибавляет коду наглядности и понятности;
- после добавления всех нужных условий по Query легко увидеть без включения трассировки, какой же в результате запрос получился;
- Query можно передать в другой кусок кода, который не знает, как он был сформирован, а только знает, записи из какой таблицы нужно выбирать;
- Query можно легко переделать для рассчета каких-нить агрегатов вместо перебора записей (бывает, люди хотят видеть на форме поле с суммой по всем записям, удовлетворяющим текущему запросу, - с Query это сделать проще простого);
- в Query не надо извращаться, если какой-то datasource нужно цеплять только по определенному условию, потому что этому datasource'у можно сказать enabled(false) - и он уже не попадет в запрос;
- при использовании Query по умолчанию включена RLS - в случае чего, не надо потом бегать и в куче мест дописывать перед запросом salesTable.recordLevelSecurity( true ).
|
|