Ответ 1
-
Запросы Hibernate Named выражаются на языке объектных запросов (JPQL или HQL), поэтому Hibernate должен сначала перевести их на SQL. Именованные запросы хранятся в NamedQueryRepository, и каждый запрос представлен NamedQueryDefinition.
Поскольку пользователь может динамически добавлять фильтры, ограничения результатов запросов, блокировки и подсказки, Hibernate не может предварительно скомпилировать HQL/JPQL до времени выполнения.
-
Hibernate также использует PreparedStatement для каждого оператора SELECT и DML, поэтому вы также можете получить предварительную компиляцию оператора базы данных, если драйвер JDBC поддерживает его и не эмулирует фазу подготовки, мультиплексируя подготовку и выполнение в одном запросе к базе данных (например, MySQL, PostgreSQL).