Спящий сложный запрос - PullRequest
       12

Спящий сложный запрос

0 голосов
/ 05 октября 2009

Я пытаюсь выполнить запрос к базе данных MySQL. Запрос довольно сложный, он имеет 5 внутренних соединений, в том числе 1 соединение с самим собой и он возвращает 3 фрагмента информации из 2 разных таблиц. Мы используем hibernate, и до сих пор я использовал его только для простых запросов. Я написал SQL-запрос и проверил его тоже. Мне интересно, как реализовать это с помощью hibernate, я могу выполнить простые SQL-операторы с Hibernate? Если так, что мне нужно, отдельный hbm.xml? Если я использую hibernate и выполняю простой SQL-запрос, могу ли я использовать кеширование позже?

Ответы [ 2 ]

2 голосов
/ 05 октября 2009

Да, вы можете выполнять простые SQL-запросы с Hibernate.

Нет, вам не нужен отдельный файл отображения hbm.xml (если вы не ХОТИТЕ , чтобы отделить запросы sql от остальных, и в этом случае вы можете сделать это). Вы можете отобразить свой именованный запрос SQL так же, как и с именованными запросами HQL.

Сможете ли вы «использовать кеширование», зависит от того, что именно вы понимаете под «кешированием» и как вы собираетесь отображать свой SQL-запрос; невозможно ответить, не зная больше деталей.

Все это говорит о том, что вам не нужно прибегать к SQL-запросу; HQL довольно мощный и вполне возможно (при условии наличия соответствующих отображений) написать ваш запрос как HQL. Можете ли вы опубликовать соответствующие сопоставления / схемы и ваш запрос SQL?

0 голосов
/ 05 октября 2009

Я настоятельно рекомендую критерии запросов по HQL-запросам. Они намного ближе к вашему программному коду, не жертвуя силой выражения. Они, однако, зависят от явного отображения отношений, в противном случае они становятся довольно сложными.

Чтобы ускорить разработку, установите свойство hibernate.show_sql = true и поиграйте с системой в отладчике, используя функции «перезагрузить измененный класс» и «сбросить стековый фрейм» в IDE + jvm, пока выдаваемый SQL не будет выглядеть тот, который вы опубликовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...