Hibernate Criteria Class для выполнения сложных запросов к базе данных - PullRequest
4 голосов
/ 05 декабря 2010

Я разрабатываю веб-приложение на основе Struts2 Framework для реализации MVC и Hibernate3 для доступа к базе данных с помощью DAOs и DTO для отображения реляционных объектов в базе данных . В контексте Hibernate мне хотелось бы знать, каков охват критериев для выполнения сложных запросов, а также есть ли другой вариант для выполнения таких задач?

Спасибо.

1 Ответ

3 голосов
/ 05 декабря 2010

Под "досягаемостью" я предполагаю, что вы имеете в виду область сложных запросов, связанных с SQL, которые могут быть построены с помощью вызовов методов через определенный объект Criteria (как обсуждено здесь ).

По моему опыту, наиболее распространенные задачи, основанные на фильтрации результатов, упорядочении, проецировании, группировании, логических конъюнктивных или дизъюнктивных операторах или подзапросах, могут выполняться путем мутации объекта Criteria ожидаемым образом.

В качестве альтернативы вы можете использовать Session.createSQLQuery для построения необработанного SQL-запроса, затем Query.list или Query.executeUpdate для его выполнения.Например:

Sesion sess = getSession();
Query mySelect = sess.createSQLQuery("SELECT * from foo");
List<Entity> results = mySelect.list();

Query myUpdate = sess.createSQLQuery("DELETE * from foo where bar = \"boz\"");
int updateCount = myUpdate.executeUpdate();

Очевидно, вы захотите расширить этот наивный пример, но вы поняли идею.

...