Посмотри исходники Hibernate, в PHP пока ничего подобного нет, и хотя мы пытаемся нечто похожее привить в LIMB, в любом случае до HQL будет очень далеко...Автор оригинала: [sid]
Существует решение, которое называется конструктор SQL-запросов (QueryObject по Фаулеру). Основная идея в генерации SQL кода с помощью объекта.
есть.Автор оригинала: pachanga
в PHP пока ничего подобного нет
а их и не нужно сравнивать. пока у php не появится полноценный memory management, а следом за ним и application server, - позволить себе динамические мэппинги мы не сможем (слишком ресурсоемко).Автор оригинала: .des.
Voxus, простите, но onPHP's OSQL и Hibernate сравнивать просто невозможно.
Сравнивать конечно не нужно, но можно заимствовать и адаптироватьАвтор оригинала: Voxus
а их и не нужно сравнивать.
Насчет генерации кода бизнес объектов я не согласен - это зло. Просто невозможно сгенерить частную логику.а вот из xml-схемы а-ля hibernate mapping генерить бизнес-объекты и соответствующие DAO-классы - легко.
речь не идет о генерации бизнес-логики. в самом примитивном случае это может выглядеть вот так:Автор оригинала: pachanga
Насчет генерации кода бизнес объектов я не согласен - это зло.
Я об этом и говорил, именно так поступает Propel, но как раз в этом я и вижу источник проблем. Как только меняется схема маппинга должен измениться базовый класс, что может привести к несоответствию реализации наследуемого класса. Я не вижу ничего хорошего, когда такие изменения происходят где-то за кулисами.Автор оригинала: Voxus
речь не идет о генерации бизнес-логики. в самом примитивном случае это может выглядеть вот так:
class BasePerson {пропертя с дефолтами/геттеры/тайпхинтнутые сеттеры};
class Person extends BasePerson {а вот тут пусто и руками пишется бизнес-логика, if any};
генериться только BasePerson.
Кстати, по-моему мы здесь несколько ушли от темы, т.к изначально требовался всего лишь конструктор SQL запросов, а не конструктор объектных запросовАвтор оригинала: Voxus
а их и не нужно сравнивать. пока у php не появится полноценный memory management, а следом за ним и application server, - позволить себе динамические мэппинги мы не сможем (слишком ресурсоемко).
на практике - редко бизнес-классы и/или схема БД меняются настолько, что изменения потом долго проносить по всем "уровням" приложения.Автор оригинала: pachanga
Я об этом и говорил, именно так поступает Propel, но как раз в этом я и вижу источник проблем. Как только меняется схема маппинга должен измениться базовый класс, что может привести к несоответствию реализации наследуемого класса. Я не вижу ничего хорошего, когда такие изменения происходят где-то за кулисами.
ну да, я ссылкой на первый вопрос отвечал.Кстати, по-моему мы здесь несколько ушли от темы, т.к изначально требовался всего лишь конструктор SQL запросов, а не конструктор объектных запросов
Ну да о вкусах не спорят, но для меня все же сгенерированный код должен быть настолько изолированным насколько возможно. Я бы даже его не хранил под CVS, чтобы его можно было спокойно удалять и генерить заново без проблем.Автор оригинала: Voxus
на практике - редко бизнес-классы и/или схема БД меняются настолько, что изменения потом долго проносить по всем "уровням" приложения.
common practice. ;-)Автор оригинала: pachanga
Я бы даже его не хранил под CVS