Although the name is SQL Query Builder, it seems to be a way to generate DQL statements, not SQL, as indicated by the note at The QueryBuilder and corroborated by this question: doctrine: QueryBuilder vs createQuery?.
So it seems to me that the names used in the query built with SQL Query Builder don't refer to SQL tables and columns but rather to classes and properties corresponding to them in the defined mapping. And if the mapping changes so that e.g. an SQL column which still has the same name is now reflected by way of ORM by a differently named property, I'd have to accordingly change the code using SQL Query Builder. On the other hand, if the names change in the database and I'm fine with keeping the existing mapped names, I just need to change the annotations on the classes and their properties, and the queries will work without modification. Am I right? If not, how so and what's the right way to understand it?