I think it depends on the case but my point is that if you hide to the developer the cost of that abstraction than you will get some surprises in performance later on.<p>There are lots of reasons why an abstraction was written, ease of use being one of them but this also means that they don&#x27;t always cover all bases (like performance). Which is alright if you (the developer) know about it.<p>Thanks to GraphQL or Falcor I can most likely do something like &quot;return me an object containing table1.colA, table2.colB, table3.colC, ...etc.&quot; very easily but it also means that I just asked for at least two joins.<p>This can get really expensive if every developer on that project has the ability to do costly queries like this.