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