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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.