Каковы преимущества HQL?


Преимущества ORM заключаются в том, что я могу сопоставлять таблицы базы данных с объектами Java. Если я использую HQL для написания пользовательских инструкций, то в чем смысл? Я могу также писать обычные SQL-запросы и использовать результирующие наборы?

2 2

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