Delphinum, и про орм ты так де думаеш?
flaky, нинини, ORM я очень часто использую, чаще чем SQL. Слой абстракции это повышение доступности кода для программиста по отношению к компьютеру (приведение языка к естественному диалекту), а тот билдер, о котором здесь идет речь, это не абстракция )
# Delphinum (21.08.2013 / 23:16)
flaky, нинини, ORM я очень часто использую, чаще чем SQL. Слой абстракции это повышение доступности кода для программиста по отношению к компьютеру (приведение языка к естественному диалекту), а тот
В почти всех, известных мне ORM существуют построители запросов, именно вот такой chaining method как в нашем топике (или около того).
Т.е билдер дари билдера - ты не одобряешь, но билдер как достижение абстракции над SQL-диалектами - ты одобряешь? гг
L!MP, ты плохо понимаешь термин ORM )
L!MP, оперидил
я к этому ввел. вообще, это билдер неплохое начало для орм, если ТС конечно захочет изобритать велик
# Delphinum (21.08.2013 / 23:24)
L!MP, ты плохо понимаешь термин ORM )
Вот так сразу?
- "Ничего ты не понимаешь в колбасных объедках" гг
Я уже собираюсь спать, потому подробно опишу мое представление ORM, билдеров и подобного и пойду на боковую )
ORM (Object-relational mapping) в дословном переводе с английского отражение объекта на отношения, то есть процесс Data mapping - отражение данных на другой тип (Классов на Relation). Если говорить технически, это механизм приведение объектной структуры (данные как объект) к реляционно-матричной (данные как характеристики и отношения), обе структуры довольно схожи, но с некоторыми принципиальными отличиями (наследование, инкапсуляция). Отсюда следует что ORM есть принцип преобразования данных типа "иерархия сущностей" к типу "матрица", соответственно это даже не абстракция, а скорее парадигма, хотя нисколько не против первого термина в данном контексте.
Что касается билдера, то это механизм формирования некоторой команды с помощью объектно-ориентированного интерфейса (интерфейса - объект-операции), что в общем то совсем не является механизмом приведения данных одного типа к данным другого, следовательно билдер и ORM это две разные вещи.
Теперь что касается "Билдер как неотъемлемая часть ORM" - скажу очень подробно чтоб небыло недопониманий и за одно подрезюмирую:
1. ORM есть механизм преобразования данных типа Класс к типу Реляционная Мартица;
2. Билдер есть интерфейс формирования команды (в частности SQL) с помощью объектного интерфейса;
3. Связи между ORM и билдерами SQL запросов нет никакой совершенно;
4. Использование известными ORM библиотеками SQL билдеров не есть часть самой ORM модели, это лишь средство упрощенного управления и формировани SQL запросов (проще работать на уровне объектного интерфейса при формировании Матричной модели чем на уровне самой матричной модели);
5. Билдеры я одобряю для изменения интерфейса в целях ... но не просто для того, что "везде так делается";
6. ORM я одобряю в любой крупной системе
Если что то не понятно, обязательно спрашивайте )
Теперь что касается унификации, SQL диалектов и PDO:
Сейчас я поддерживаю 6 основных СУБД, это MySQL, MS SQL, FireBird, Oracle DB, DB2, PostgreSQL. Все эти системы поддерживаются PDO, но диалекты у них разные (в частности компонента LIMIT, которая совпадает максимум в 2 перечисленных СУБД), потому необходимо определить средство унификации SQL запросов чтобы система была переносимой (иначе в PDO нет смысла), я пошел по пути "Интерпретатор+Компонатор", можно выбрать путь билдера, но, почему я остановился именно на этом пути? Обратите внимание на JPQL - унифицированный, объектно-ориентированный язык запросов к реляционным СУБД - идеальный механизм на сегодняшний день, чего, конечно, билдеры позволить не могут (максимум лаконичности при той же нагрузке). Мой подход позволил реализовать подобный диалект у себя, но я могу и прикрутить сюда билдер для "гурманов", а обратное не получится (прикрутить новый SQL диалект на билдер у вас не удастся), потому я не очень почитаю билдеры, это простой, но не достаточно гибкий механизм.
Delphinum, ты совершенно зря написал столько текста
следовательно билдер и ORM это две разные вещи.
А кто-то говорил что это одно и то же или что одно, подразумевает другое?
Мне была не ясна твоя неприязнь к построителям запросов и не более.