Some backend libraries let you write SQL queries as they are and deliver them to the database. They still handle making the connection, pooling, etc.

ORMs introduce a different API for making SQL queries, with the aim to make it easier. But I find them always subpar to SQL, and often times they miss advanced features (and sometimes not even those advanced).

It also means every time I use a ORM, I have to learn this ORM’s API.

SQL is already a high level language abstracting inner workings of the database. So I find the promise of ease of use not to beat SQL. And I don’t like abstracting an already high level abstraction.

Alright, I admit, there are a few advantages:

  • if I don’t know SQL and don’t plan on learning it, it is easier to learn a ORM
  • if I want better out of the box syntax highlighting (as SQL queries may be interpreted as pure strings)
  • if I want to use structures similar to my programming language (classes, functions, etc).

But ultimately I find these benefits far outweighed by the benefits of pure sql.

  • CyclohexaneOP
    link
    fedilink
    231 year ago

    But then you get locked into the ORM’s much more highly specific syntax.

    At least the differences across SQL variants are not THAT major from my experience. The core use cases are almost the same.

    • @Zeth0s
      link
      13
      edit-2
      1 year ago

      How many good orm do you have per language? 1? 2? Orm is practically locked once one chooses the language

      • CyclohexaneOP
        link
        fedilink
        41 year ago

        Surely there’s more than 1 ORM that is at least used commonly enough to have a decent community for every major programming language. Just search the web for ORMs in python, JS, and Go and you’ll see what I mean.

        Not even language choice is forever. I’ve seen more codebases change languages or frameworks than I have seen changing databases.

        What if you change jobs, and now work with a different language or framework? What if you’re just helping out a sibling team in your company, and they use something different? Having to relearn a new ORM is annoying when you already know SQL.

        I am not basing my argument on any of these things having a high likelihood of changing. The main point to me is that you’re abstracting an already high level and very well abstracted API, and the reasons presented don’t justify it (abstracting vendors but then locking you into a more specific vendor).

        • @Zeth0s
          link
          31 year ago

          Sure, there are several. But, for instance, Python is pretty much only sqlalchemy. All others are not really common.

          At the end with a single framework one can use several backends. That is pretty convient

          • @[email protected]
            link
            fedilink
            English
            31 year ago

            Sqlalchemy is really nice too, though I haven’t used the 2.x series yet. I cannot stand the django ORM after using sqlalchemy.