Hibernate internally uses PreparedStatements under JDBC when converting HQL to SQL. How are inline parameters within an HQL handled ?
example:
public List<Student> loadAllStudentsByStatus(String status) {
String queryString = "FROM Student student WHERE student.status = " + status;
Query queryObject = currentSession().createQuery(queryString);
return queryObject.list();
}
Will status be "parsed" and used as a parameter in SQL, or does it get sent as an inline parameter.
My reason behind the argument is "best practices", and query performance for repetitive calls
It gets sent inline. You definitely don't want to do this when status
is a client-controlled value.
Rather parameterize it:
return currentSession()
.createQuery("FROM Student student WHERE student.status = :status")
.setParameter("status", status)
.list();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With