Hacker News new | ask | show | jobs
by jasfi 562 days ago
This is cool, but most ORMs have support for raw SQL.
2 comments

SQLc isn't just raw SQL.

SQLc you write the queries, it generates the boilerplate functions to execute them.

This works better than an ORM because you don't have to deal with an ORM.

How SQLc would solve following issue.

For example I have original query:

    SELECT * from users where following_count > $1 and followers_count < $2;
Then some refactoring later it becomes:

    SELECT * from users where enabled and followers_count < $1 and following_count > $2;
As I understand go API would not change it still query(int, int).
I'm not sure that's an issue? It would be an odd refactor to add a new side effect to the query you didn't want to apply across the board.

More likely you would introduce a new query that would get a new function call.

usersWithCountBetween(a, b)

vs

enabledUsersWithCountBetween(a,b)

If you mean, how to handle the addition of a new enabled flag that is passed in, that too would either require refactoring or a new function.

These aren't really things I would consider a problem but maybe I'm missing something?

Oh and you can configure the number of params before it replaces the params with an interface so things like this are easier to manage over time.

Is the question about how to version the query? You have comments before the query that allow you to name the exported function so you could have both queries and name them something different.
Use hql named queries with named parameters
What's hql? If it's something related to hybernate than your comment is slightly out of context.
Hibernate Query Language. How is it out of context?

Use Named Native Query and you have SQL queries.

I really don’t understand the objection to ORMs. By that logic, you might as well reserve a block of memory and offsets instead of class/struct attributes.

I did not object against ORMs. Please reread thread. I also have issues with SQLc, and please note it's Go library. Java is out of context.
We have achieved at a point were we call SQL "raw". Am I this old?
I've been hearing people calling SQL "raw" for the past 10 years so... probably?
It's only called "raw" when called from an ORM, as opposed to generated SQL.
It became raw since query builders started to try to mimic SQL. Quite long ago.