Думалось мне, такое решение на рынке точно должно быть — а не нашёл
А зачем? Орм это попытка абстрагироваться от бд. А ты хочешь наоборот, заиметь орм, привязанную к конкретной СУБД Если тебе нужно что-то специфичное - raw sql лучше всего подходит
Не уверен, что говорю прям правду — но думается мне, миграции с одной БД на другую это дело очень не частое. Было бы логично иметь инструмент, который абстрагируется от прямого взаимодействия с БД и улучшает DX, но при этом, в ущерб универсальности, пытается покрыть максимум возможностей какой-то одной БД.
Верно, не частое И потому орм часто - ненужная прослойка. Уже есть sql для того, чтобы делать запросы к субд
А если у какой-либо БД нет возможности работать с ОРМ? Ну вот не придумали и не придумают никогда для него QB + Operators
Если сделать ORM максимально заточенный под одну конкретную базу данных — разве у него не будет оверхед намного меньше, чем у ORM "общего назначения"?
Зачем делать такую орм? Зачем вообще нужна орм?
Проще делать какие-то условные запросы? Можно после запроса автоматически данные упаковать в какой-то объект? Автоматически подсказки от Intellisense, чтобы процесс шёл быстрее и надёжнее? Автоматическое выведение типов?
Не вижу простоты в запросах при использовании орм. Наоборот, с sql запросы делаются проще Маппинг может быть удобной штукой. Но не обязательно для этого тащить орм. Мне больше нравится как это сделано в го с описанием полей в тегах Подсказки от ide в sql так же есть. Если нет, то всегда можно, а часто даже нужно, отладить запрос перед тем, как тащить его в проект Выведение типов - выше упомянул Тонкий слой абстракций - это запросы, лежащие в отдельном файле, и обёртка-маппер над ними
Один раз писал много именно сырых запросов, для маппинга написал небольшой миддлвар, а запросы составлял примерно как SELECT x as user.nickname, y as user.email, foo as user.profile.firstname, bar as user.profile.lastname, baz as user.profile.avatarUrl Миддлвар конвертировал плоский объект с дот-нотацией в именах в другой, уже вложенный. { nickname, email, profile: { firstname, lastname, avatarUrl } }
Такое решение для маппинга в сырых запросах это норм или принято делать как-то по-другому?
Вроде по итогу после каждого запроса я без лишних мук получал сразу красивые вложенные объекты, но до сих пор не покидает ощущение, что это какой-то костыль.
Обсуждают сегодня