java - 从 HQL 查询返回映射并进行更好的优化

标签 java hql

您好,我想使用 HQL 返回 map ,现在我有以下两种方法,哪种方法消耗更少的内存,或者哪种方法更好?

Query query = sessionFactory.getCurrentSession().createQuery("from UniwareTallySku");
    @SuppressWarnings("unchecked")
    List<UniwareTallySku> skuList = (List<UniwareTallySku>) query.list();

    for (UniwareTallySku list : skuList) {
        uniwareSkuVsTallySku.put(list.getUniwareSku(), list.getTallySku());
    }

    return uniwareSkuVsTallySku;

另一个是

Query query = sessionFactory.getCurrentSession().createQuery("select new map(table.columnname2 as c1, table.columnname3 as c2) from UniwareTallySku");

哪个更好?? 感谢帮助

最佳答案

我觉得这是一个微观优化。除了可以忽略不计的优化之外,您还在手动查询中滥用 Hibernate。我选择第一种方式。

切勿在代码中手动编写查询。它们依赖于数据库。并且还要避免 HQL(如果可能)。

尝试使用Criteria API

关于java - 从 HQL 查询返回映射并进行更好的优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32204593/

相关文章:

java - 学习 Criteria 而不是 hql,如何使用对象列表使用条件进行查询?

java - HQL 语句中的 length() 不起作用

c# - 使用 NHibernate 的自定义 Linq 生成器 (AddDays)

java - EclipseLink 无法为 ManyToMany 创建完整的 JoinTable

java - Kubernetes 上的 Kafka 流 : Long rebalancing after redeployment

java - Eclipse J2EE 预览服务器无法找到已部署的页面

java - 如何设置InputStream.read的读取超时时间?

hibernate - 将参数数组设置为 hibernate 查询语言

hadoop - Hive + Tez::A 连接查询卡在最后 2 个映射器很长一段时间

java - 计算日期差异时出现奇怪的值