You are right. It is very useful we also use orm for many tasks.
It is a tricky question.
I think the answer is that popular static languages are object oriented. So they just do not try to provide comfortable access to relational data. There are no such problems in dynamic languages because they have very flexible structure.
I would want from scala best of two worlds It is really difficult task in practice.
I respect scala very much for the ability to solve such tasks.
We currently solve such tasks by making mapping once per dataset instead of doing it per each row.
I have tried to illustrate it in this topic.
It is quite common optimization strategy see JDBC Batch.
Quite frankly if business logic can not be batch processed it is not scalable.