Каковы преимущества HQL?
Преимущества ORM заключаются в том, что я могу сопоставлять таблицы базы данных с объектами Java. Если я использую HQL для написания пользовательских инструкций, то в чем смысл? Я могу также писать обычные SQL-запросы и использовать результирующие наборы?
2 ответа:
Ну, в основном потому, что иногда невозможно (или очень трудно) писать запросы, используя другие альтернативы. Затем вам нужно вернуться к альтернативе HQL.
HQL имеет, как недостаток, тот факт, что вы пишете строки с ним. Поэтому настоятельно рекомендуется использовать другие стратегии. Но, иногда, это самый быстрый способ реализовать его.
Я бы также сказал, чтобы вы прочитали этот пост, который уже подробно обсуждался о HQL: JPA и Hibernate-Criteries vs. JPQL или HQL
HQL-единственная альтернатива получить немного performace, оставшегося в спящем режиме.
Если у вас есть большая таблица с большим количеством строк, и все, что вам нужно, - это идентификатор и описание, то вы лучше справитесь с hql. Вы можете заполнить pojo информацию о двух столбцах, и если вы используете hibernate 4, у вас есть какой-то тип safty тоже.
Запрос:
final TypedQuery<Pojo> query = em.createQuery(new StringBuilder() .append("SELECT new ").append(Pojo.class.getName()) .append("(tbl.id, tbl.desc) FROM ") .append(BigTable.class.getName()).append(" tbl ") .append("WHERE tbl.id between :start and :end ") .toString(), Pojo.class ); List<Pojo> list = query.getResultList();