@HudiDudi

Какой должна быть ORM?

Доброго всем дня.

Захотелось мне написать небольшой проектик на Rust. Чтобы познакомиться с языком.Естественно сначала решил посмотреть, что там есть из готовых библиотек. Меня сильно опечалило отсутствие каких-либо высокоуровневых ORM. Я конечно же понимаю, что язык очень молодой. Но пять существующих решений, которые я нашел были больше похожи на конструкторы запросов.

В основной работе я использую php и в основном работаю с бд через ActiveRecord. Так же был небольшой опыт с DataMaper-ом в виде Doctrine 2. И эти ORM позволяют работать с бд, вообще не заморачиваясь о том, как происходит связь в бд. И меня несколько удивило отсутствие каких-либо наработок в этой области в Rust (хотя бы начальных версий).

И у меня возник закономерный вопрос. А может повсеместное использование ORM это только удел web? Может достаточно создать класс репозитория, где делать sql запросы вручную и мапить их на нужные структуры?

Подскажите, на сколько высокоуровневой должна быть ORM? Используется ли чистый queryBuilder без каких-либо надстроек? Есть ли где почитать об этом? Я в силу узости своего кругозора не могу сделать обоснованый вывод.

Вопрос касается не только Rust, но и других языков.
  • Вопрос задан
  • 596 просмотров
Решения вопроса 1
> И меня несколько удивило отсутствие каких-либо наработок в этой области в Rust (хотя бы начальных версий).
1) язык в релизе несколько месяцев, чего вы хотите-то;
2) не во всех языках ORM смотрится естественно. В C++ нормальной ORM нет до сих пор, есть некоторые библиотеки на базе Qt, но де-факто стандарта нет просто потому, что в языке недостаточно силен уровень метаданных. Но в этом нет проблемы просто потому, что на плюсах редко пишутся приложения, где нужен такой уровень;
3) А может повсеместное использование ORM это только удел web?
Я бы сказал что ORM это удел бизнес-приложений и языков высокого уровня (Java/.NET/Ruby). Другое дело, что веб-приложения в 99% случаев пишут на всяких asp.net и Рубях, а не на плюсах, поэтому и такая корреляция. Внутрикорпоративных десктопных приложений по прежнему достаточно, и как раз там ORM тоже любят.

> Подскажите, на сколько высокоуровневой должна быть ORM?
Это вам решать, ORM-ки разные бывают, кто-то где-то используют потолще, кто-то - потоньше. Лично я особого смысла в тонких не вижу для большинства задач, поэтому на мой вкус в ORM обязательно должны быть следующие вещи:
1) martinfowler.com/eaaCatalog/identityMap.html
2) martinfowler.com/eaaCatalog/unitOfWork.html
3) martinfowler.com/eaaCatalog/inheritanceMappers.html

Вообще, озакомьтесь для начала со всеми Object-Relational паттернами: martinfowler.com/eaaCatalog, а то наверняка напишете парк велосипедов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы