在几个星期内,我只是了解GORM作为数据库ORM。检查代码内部后,每个命令(限制,顺序,位置,或选择等)都通过克隆当前数据库返回新实例。
这里有没有人知道克隆数据库而不是使用当前实例的主要目的是什么?
当我有命令select,where,limit,order,join时,这将是克隆数据库实例的5倍。 AFAIK,在内存上创建对象很昂贵。
答案 0 :(得分:3)
目的是能够存储查询的“临时”实例,以便以后能够派生它们。也就是说,如果你有许多查询共享序列的某些部分,你应该可以做类似的事情
q := gorm.Select(...).Limit(...).Order(...)
q1 := q.Where(...)
q2 := q.Where(...)
(这个例子是一个可能甚至没有映射到GORM API的例子,因为我自己不使用它。)
现在,我相信在内存中克隆不会保留很长时间的对象,与执行SQL查询的成本相比,并不会影响性能,这意味着网络往返......