使用Hibernate
执行纯SQL
的场景并不多,大致有以下几种情况:
Hibernate
默认查询表中的所有字段,如果字段过多,性能将大幅降低- 关联查询,由其是关联多张表查询时,纯
SQL
效果更好 - 使用一些数据库的汇聚函数查询时,纯
SQL
可能更合适 - 其它的一些适用于纯
SQL
查询的情况
示例代码:
private List<String> getUserIds() {
List<String> userIds = new ArrayList<String>();
String sql = "SELECT ID,NAME,ACCOUNT FROM VO_USERS";
SQLQuery query = getSession().createSQLQuery(sql);
query.setResultTransformer(new ResultTransformer() {
@Override
public Object transformTuple(Object[] arg0, String[] arg1) {
Map<String, Object> map = new LinkedHashMap<String, Object>();
int i = 0;
for (String column : arg1) {
map.put(column, arg0[i++]);
}
return map;
}
@Override
public List transformList(List arg0) {
return arg0;
}
});
List list = query.list();
for (Object object : list) {
Map map = (Map) object;
userIds.add((String) map.get("ID"));
}
getHibernateTemplate().flush();
getHibernateTemplate().clear();
return userIds;
}
本文作者为新逸网络,转载请注明。