В чем разница между запросом, собственным запросом, именованным запросом и типизированным запросом? Существует ли только «постоянный» запрос, или это просто аббревиатура? На мой взгляд, собственный Query - это запрос, написанный в простом sql, тогда как именованный запрос относится к объектам (hibernate-mapping). Может кто-нибудь объяснить это кратко?Разница между запросом, нативным запросом, именованным запросом и типизированным запросом
ответ
Запрос
Запрос относится к JPQL/HQL запрос с синтаксисом, аналогичным SQL обычно используется для выполнения инструкций DML (операции CRUD).
В JPA вы можете создать запрос, используя entityManager.createQuery()
. Вы можете посмотреть в API для более подробной информации.
В Hibernate, вы используете session.createQuery()
"
NativeQuery
Native запрос относится к реальным запросам SQL (имеется в виду реальных объектов базы данных). Эти запросы являются операторы SQL, которые могут быть непосредственно выполнены в базе данных с использованием клиента базы данных.
JPA: entityManager.createNativeQuery()
Hibernate (Вне-JPA): session.createSQLQuery()
NamedQuery
Подобно тому, как константа определена. NamedQuery - это то, как вы определяете свой запрос, указав ему имя. Вы можете определить это в файле сопоставления в спящем режиме, а также использовать аннотации на уровне сущности.
TypedQuery
TypedQuery дает возможность упомянуть тип объекта при создании запроса и поэтому любая операция после этого не требуется явное приведение к предполагаемому типу. Принимая во внимание, что обычный API Query
не возвращает точный тип объекта, который вы ожидаете, и вам нужно выполнить бросок.
Есть ли производительность, пропускная способность, потребление памяти, загрузка различий между серверами разных серверов? Я думаю, что потребление памяти NamedQuery больше, чем запрос, но я не могу сказать, где предел запросов, чтобы выбрать тот или иной. Могли бы вы объяснить? заранее спасибо – Joe