2016-04-15 2 views
1

За несколько прошедших недель я узнал о GORM как базе данных ORM. После проверки внутри кода каждая команда (предел, порядок, где, или, выбор и т. Д.) Возвращает новый экземпляр путем клонирования текущей БД.
Есть ли кто-нибудь здесь знать, какова основная цель клонирования БД вместо использования текущего экземпляра?
Когда у меня есть команда select, where, limit, order, join, которая будет в 5 раз клонировать экземпляр DB. AFAIK, создание объекта в памяти дорого.GORM Golang: цель клонирования DB-экземпляра

ответ

3

Цель состоит в том, чтобы иметь возможность хранить «временный» экземпляр вашего запроса, чтобы получить их позже. То есть, если у вас есть ряд вопросов, которые разделяют некоторую часть последовательности, вы должны быть в состоянии сделать что-то вроде

q := gorm.Select(...).Limit(...).Order(...) 
q1 := q.Where(...) 
q2 := q.Where(...) 

(Этого примера является rought примером, который, вероятно, даже не карты для GORM API, поскольку я не использую его сам.)

Теперь я считаю, что клонирование объектов в памяти, которые не будут храниться долго, не мешает большой производительности по сравнению с затратами на выполнение SQL-запроса, что подразумевает сеть в оба конца ...

+0

Спасибо @Elwinar за ваш ответ. Но для меня, если я хочу хранить временный экземпляр БД с конкретным запросом, я сделаю это вручную, вызывая gorm.Clone(), тем самым он будет более оптимизирован. – Apin

Смежные вопросы