Подтвердить что ты не робот

Разница между запросом, собственным запросом, именованным запросом и типизированным запросом

В чем разница между запросом, собственным запросом, именованным запросом и типизированным запросом? Существует ли только "постоянный" запрос, или это просто аббревиатура? На мой взгляд, собственный Query - это запрос, написанный в простом sql, тогда как именованный запрос относится к объектам (hibernate-mapping). Может кто-нибудь объяснить это кратко?

4b9b3361

Ответ 1

Очень простой вопрос и немного глупости ответили бы вам хорошо. В любом случае, вы идете.

Запрос

Запрос относится к запросу JPQL/HQL с синтаксисом, аналогичным SQL, обычно используемому для выполнения операторов DML (операции CRUD).

В JPA вы можете создать запрос с помощью entityManager.createQuery(). Вы можете более подробно ознакомиться с API.

В Hibernate вы используете session.createQuery() "

NativeQuery

Собственный запрос относится к актуальным sql-запросам (ссылаясь на фактические объекты базы данных). Эти запросы представляют собой операторы sql, которые могут быть непосредственно выполнены в базе данных с использованием клиента базы данных.

JPA: entityManager.createNativeQuery() Спящий режим (не-JPA-реализация): session.createSQLQuery()

NamedQuery

Аналогично тому, как определяется константа. NamedQuery - это то, как вы определяете свой запрос, указав ему имя. Вы можете определить это в файле сопоставления в спящем режиме, а также использовать аннотации на уровне сущности.

TypedQuery

TypedQuery дает вам возможность указать тип сущности при создании запроса, и поэтому любая операция после этого не нуждается в явном приведении к предполагаемому типу. Если нормальный API Query не возвращает точный тип объекта, который вы ожидаете, и вам нужно сделать бросок.