Читаем Изучаем Java EE 7 полностью

··Query setParameter(Parameter param, Date value, TemporalType temporalType);

··Query setParameter(Parameter param, Calendar value, TemporalType temporalType);

··// Извлекает параметры посредством запроса

··Set> getParameters();

··Parameter getParameter(String name);

··Parameter getParameter(int position);

·· Parameter getParameter(String name, Class type);

·· Parameter getParameter(int position, Class type);

··boolean isBound(Parameter param);

·· T getParameterValue(Parameter param);

··Object getParameterValue(String name);

··Object getParameterValue(int position);

··// Ограничивает количество результатов, возвращаемых запросом

··Query setMaxResults(int maxResult);

··int getMaxResults();

··Query setFirstResult(int startPosition);

··int getFirstResult();

··// Задает и извлекает подсказки в запросах

··Query setHint(String hintName, Object value);

··Map getHints();

··// Задает тип режима сброса для использования при выполнении запроса

··Query setFlushMode(FlushModeType flushMode);

··FlushModeType getFlushMode();

··// Задает тип режима блокировки для использования при выполнении запроса

··Query setLockMode(LockModeType lockMode);

··LockModeType getLockMode();

··// Разрешает доступ к API, специфичному для поставщика

·· T unwrap(Class cls);

}

Методы, которые главным образом используются в этом API, обеспечивают выполнение запроса как такового. Чтобы выполнить запрос SELECT, вам придется сделать выбор между двумя методами в зависимости от требуемого результата.

• Метод getResultList() выполняет запрос и возвращает список результатов (сущностей, атрибутов, выражений и т. д.).

• Метод getSingleResult() выполняет запрос и возвращает одиночный результат (генерирует исключение NonUniqueResultException при обнаружении нескольких результатов).

Для осуществления операции обновления или удаления метод executeUpdate() выполняет массовый запрос и возвращает несколько сущностей, затронутых при выполнении запроса.

Как вы уже видели в разделе «JPQL» ранее, при запросе могут использоваться параметры, которые являются либо именованными (например, myParam), либо позиционными (например,?1). API Query определяет несколько методов setParameter для задания параметров перед выполнением запроса.

Когда вы выполняете запрос, он может возвратить большое количество результатов. В зависимости от приложения они могут быть обработаны все вместе либо порциями (например, веб-приложение выводит только десять строк за один раз). Для управления разбиением на страницы интерфейс Query определяет методы setFirstResult() и setMaxResults(), позволяющие указывать соответственно первый получаемый результат (с нумерацией, начинающейся с нуля) и максимальное количество результатов для возврата относительно этой точки.

Режим сброса является для поставщика постоянства индикатором того, как следует поступать с ожидаемыми изменениями и запросами. Есть две возможные настройки режима сброса: AUTO и COMMIT. AUTO (используемая по умолчанию) означает, что поставщик постоянства обеспечивает, что ожидаемые изменения будут видимыми при обработке запроса. COMMIT используется, когда эффект от обновления сущностей не перекрывается измененными данными в контексте постоянства.

Запросы можно блокировать с помощью метода setLockMode(LockModeType).

В последующих разделах демонстрируется пять разных типов запросов с использованием описанных здесь методов.

<p>Динамические запросы</p>

Динамические запросы генерируются на лету по мере того, как это требуется приложению. Для создания динамического запроса используйте метод EntityManager.createQuery(), принимающий в качестве параметра строку, которая представляет JPQL-запрос.

Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT