Более важно то, что применение
Более важно то, что применение подхода QBE создает неудобства для прикладных объектов – в них должны будут поддерживаться поля/свойства, допускающие наличие неопределенных значений, что может быть нарушением правил прикладной области, поддержку которых стремится обеспечить объектный мир. Во многих сценариях использования человек без имени не является слишком полезным объектом, а именно этого потребует подход QBE от прикладных объектов, хранимых в соответствующей базе данных. (Профессионалы QBE могут возразить, что в реализации объектов неразумно принимать это во внимание, но это, опять же, нелегко и часто не делается.)
В результате второй шаг обычно состоит в поддержке объектной системой подхода «Query-By-API», в котором запросы конструируются путем использования объектов-запросов, обычно примерно в такой форме:
Query q = new Query();
q.From("PERSON").Where(
new EqualsCriteria("PERSON.LAST_NAME", "Smith"));
ObjectCollection oc = QueryExecutor.execute(q);
Здесь запрос основывается не на пустом «шаблоне» выбираемого объекта, а на наборе «объектов-запросов», которые совместно используются для определения объекта в стиле команды, предназначенной для выполнения над базой данных. Несколько критериев комбинируется путем использования некоторой конструкции, обычно соединяющей через «And» и «Or» объекты, каждый из которых содержит уникальный объект-критерий, задающий часть условия выборки. К концу запроса могут быть добавлены вызовы объектов фильтрации/манипулирования, такие как «OrderBy(field-name)» или «GroupBy(field-name)». В некоторых случая эти вызовы методов в действительности ведут в объекты, конструируемые программистом и явно связываемые между собой.
Разработчики часто отмечают, что подход QBA является намного более многословным, чем традиционный подход SQL, и при использовании этого подхода намного более трудно (если не невозможно) представить некоторые виды запросов (в частности, внешние соединения).
Содержание Назад Вперед