Pull to refresh

Comments 10

Если в ПХП что-то толком не реализовано, это не значит, что его нет вообще =)
Прочитайте про DAO, имхо, это именно то, что вы попытались изложить тут.
Например, java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

ЗЫ а ОРМ это лишь удобный механизм для реализации ДАО.
А зачем нужна такая абстракция?
Ясно, что реализация данной идеи будет сложной и неоднозначной, и все ради того, чтобы «можно» было в будущем использовать не sql базы данных.
Как раз «сложной и неоднозначной» реализацией будет у ORM, который должен предусмотерть все-все на свете. А поскольку в данном случае модель конкретна, то и реализация будет простой. Реализуем же мы эту конкретную модель и эту конкретную базу данных, а не всю абстракцию.
Получается что автор для каждого проекта выдумывает свой ORM?
Нет, не выдумывать свой ORM, а выдумывать свою модель данных. Для многих разработчиков этот термин даже непривычен, и поэтому модель данных обычно не представлена в четком виде, а аморфно размыта.
В значительной степени это абстрагирование ради абстрагирования — человечество на протяжении многих лет старалось формализовать данные, свести описание объектов и событий к ограниченному набору характеристик. На выходе всё равно мы имеет таблицы и списки — зачем навязывать двойные преобразования?
Также хочу отметить, что SQL — готовый язык для описания запросов клиентов к хранилищу данных. Да, он в чём-то неполноценен, но дополнительный уровень абстракции предполагает изобретение другого языка запросов (API) для взаимодействия этих кубиков.
Наверное вы не совсем уловили смысл. Абстракция здесь подразумевает не полет в звездные выси, а просто отказ от какого-то конкретного типа хранилища данных и языка общения с ним (SQL). Ну зачем приложению вообще знать какой язык понимает какое-там хранилище. Вместо это приложение само вводит свой собственый язык общения с данными, но не общего назначения (абстрактный), а базирующийся на предмете (конкретный). То есть он будет говорить не строками, колонками и таблицами, а товаром, корзинами, заказчиками или проводками, остаткими и балансами. Таким образом никакой такой супер-пупер абстракции ради абстракции, а даже наоборот.
Насколько я это понимаю, это и называется — ORM, только ORM изначально подразумевал собой просто эмуляцию SQL запросов, сейчас мысль растёт и у вас она идёт в правильном направлении, но всё же это ORM и ваши примеры это подтверждают, вы при помощи объектов пытаетесь управлять данными.
В какой-то мере да. Но ORM (Object-relational mapping) имеет более узкое назначение — связь объектной модели с реляциоанной. Но ведь хранилище может оказаться и объектным. То есть это больше похоже на явовское DAO.
Sign up to leave a comment.

Articles