2015-08-25 2 views
1

Привет, я хочу использовать HQL для возврата карты. Теперь у меня есть два метода, которые потребляют меньше памяти или какой из них лучше?Вернуть карту из запроса HQL с лучшей оптимизацией

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"); 

какой из них лучше ?? Справка оценивается

ответ

0

Я чувствую это как микро-оптимизацию. Помимо этой незначительной оптимизации вы злоупотребляете Hibernate своими ручными запросами. Я сперва.

Никогда не записывайте запросы вручную в код. Они зависят от БД. А также избегайте HQL (, если возможно).

Попробуйте использовать Criteria API

+0

Хорошо я зависимую часть БД. но я сомневаюсь, что в конечном итоге критерии будут преобразованы в SQL-запрос или нет. –

+0

Конечно, это так. –

Смежные вопросы