I agree. I used to dislike SQL, but after making some effort to better learn it, I now much prefer “raw” SQL over any wrapper or ORM for anything but the most trivial use cases. My favourite Clojure DB library is HugSQL[1] because it allows you to write pure SQL in a composable way.
I’ve had to fix, optimise and diagnose transaction/locking problems with complex ORM-queries in the past and it was very painful. The best I could do was have the DB log the raw statements and then inspect those. If the queries were already in SQL, it would have been a lot easier.
SQL is pretty damned good at what it does and is battle tested.
I’ve had to fix, optimise and diagnose transaction/locking problems with complex ORM-queries in the past and it was very painful. The best I could do was have the DB log the raw statements and then inspect those. If the queries were already in SQL, it would have been a lot easier.
SQL is pretty damned good at what it does and is battle tested.
[1] https://www.hugsql.org