LINUX.ORG.RU

[Java] Запросы к БД через Hibernate.

 


0

1

Добрый день.
Как я знаю можно задавать запросы несколькими способоми:
1. Query by API, используя для этого, например, Criteria API 2.0 из JPA 2.0.

2. Query by String. Пишется запрос, например, на JP-QL или HQL, по которому получаем результат. Все проблемы таких запросов перечислены здесь.

Есть ли какие-нибудь премущества второго способа перед первым? Если ли средства, позволяющие выявлять ошибки и опечатки в запросах-строках на этапе компиляции (возможно, на уровне IDE, в виде плагина)?


Удобство. Когда нужно вытянуть из базы специфические поля, да ещё и применяя всякие связи, построить hql-запрос куда проще и он будет нагляднее.

Если ли средства, позволяющие выявлять ошибки и опечатки в запросах-строках на этапе компиляции

Сам бы хотел нечто подобное..

OramahMaalhur ★
()

Выбросьте Hibernate! Есть OpenJPA и Fetch Plans!

jreznot ★
()

Я вообще никогда не использую Criteria, кроме когда нужно сформирвоать запрос программно.

Query by String читабельнее. А IDEA умеет их еще и проверять.

ЗЫ. По ссылке описаные проблемы высосаны из пальца. Criteria в жаве - уродство.

dizza ★★★★★
()
Ответ на: комментарий от OramahMaalhur

Не обращайте внимания, это Pi. Некомпетентный модератор /development.

// c: bleetly lacquey намекает на слуг народа

anonymous
()

Criteria API не позволяет модификацию данных - хочешь сделать update или delete с критериями - используй HQL/JPQL.

Crocodille ★
()
Ответ на: комментарий от dizza

Т.к. запросов обычно сильно больше одного, то практике приходится использовать либо Criteria, либо строить запрос через StringBuilder. Во втором случае читаемость получается просто феерическая.

Crocodille ★
()
Ответ на: комментарий от Crocodille

либо строить запрос через StringBuilder.

Это если нужно запросы формировать, то да, Criterial лучше. А если писать кастомные запросы ручками - query by string самое читабельное.

dizza ★★★★★
()
Ответ на: комментарий от OramahMaalhur

> Когда нужно вытянуть из базы специфические поля

Не понял про специфичные поля. Что имели в виду?

dimv
() автор топика
Ответ на: комментарий от dimv

>Не понял про специфичные поля. Что имели в виду?

имел в виду что-то такое:
select u.group.product.name from User u ....

OramahMaalhur ★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.