准备好的语句、hibernate 和 HQL
当将 HQL 转换为 SQL 时,Hibernate 在内部使用 JDBC 下的PreparedStatements。 HQL 中的内联参数是如何处理的?
示例:
public List<Student> loadAllStudentsByStatus(String status) {
String queryString = "FROM Student student WHERE student.status = " + status;
Query queryObject = currentSession().createQuery(queryString);
return queryObject.list();
}
状态将被“解析”并用作 SQL 中的参数,还是作为内联参数发送。
我的论据背后的原因是“最佳实践”,以及重复调用的查询性能
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
它被内联发送。当
status
是客户端控制的值时,您绝对不想这样做。而是参数化它:
另请参阅:
It gets sent inline. You definitely don't want to do this when
status
is a client-controlled value.Rather parameterize it:
See also: