hibernate提供了很多种查询方式,也支持原始的SQL查询。
1.Scalar queries
The most basic SQL query is to get a list of scalars (values).
sess.createSQLQuery("SELECT * FROM CATS").list();
sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list();
To avoid the overhead of using ResultSetMetadata, or simply to be more explicit in what is returned, one can use addScalar():
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("id", IntegerType.INSTANCE)
.addScalar("name", StringType.INSTANCE)
.addScalar("age", IntegerType.INSTANCE);
也就是说:通过 addScalar()显示地设置列的数据类型,能够避免hibernate自己使用ResultSetMetadata去检查数据库中列的实际类型,有一定的性能优势。不过这种方式一般没有啥用,我们虽然使用SQL,但还是希望返回值是对象,而不是Object[]。