准备好的语句、hibernate和HQL
在将HQL转换为SQL时,Hibernate在内部使用JDBC下的PreparedStatements。HQL中的内联参数是如何处理的 例如:准备好的语句、hibernate和HQL,hibernate,jdbc,hql,prepared-statement,Hibernate,Jdbc,Hql,Prepared Statement,在将HQL转换为SQL时,Hibernate在内部使用JDBC下的PreparedStatements。HQL中的内联参数是如何处理的 例如: public List<Student> loadAllStudentsByStatus(String status) { String queryString = "FROM Student student WHERE student.status = " + status; Query queryObject = cu
public List<Student> loadAllStudentsByStatus(String status) {
String queryString = "FROM Student student WHERE student.status = " + status;
Query queryObject = currentSession().createQuery(queryString);
return queryObject.list();
}
公共列表loadAllStudentsByStatus(字符串状态){
字符串queryString=“FROM Student WHERE Student.status=“+status;
Query queryObject=currentSession().createQuery(queryString);
返回queryObject.list();
}
状态将被“解析”并用作SQL中的参数,还是作为内联参数发送。
我提出这个论点的原因是“最佳实践”,以及重复调用的查询性能。当
status
是客户机控制的值时,您肯定不想这样做
而是将其参数化:
return currentSession()
.createQuery("FROM Student student WHERE student.status = :status")
.setParameter("status", status)
.list();
另见: