Встречается на собеседованиях • сегодня
Как использовать нативные запросы в Hibernate
Hibernate позволяет выполнять нативные SQL-запросы через `EntityManager` или `Session`. Основные способы:
1. **`createNativeQuery()`**:
```java
Query query = entityManager.createNativeQuery("SELECT * FROM users", User.class);
List users = query.getResultList();
```
2. **Именованные нативные запросы** (через аннотацию `@NamedNativeQuery`):
```java
@NamedNativeQuery(
name = "findUserByEmail",
query = "SELECT * FROM users WHERE email = :email",
resultClass = User.class
)
// Вызов:
Query query = entityManager.createNamedQuery("findUserByEmail")
.setParameter("email", "test@example.com");
```
3. **ResultSetMapping** для сложных результатов:
```java
@SqlResultSetMapping(
name = "UserWithRoleMapping",
entities = {
@EntityResult(entityClass = User.class),
@EntityResult(entityClass = Role.class)
}
)
```
Важно: нативные запросы обходят кеш Hibernate и могут быть уязвимы к SQL-инъекциям. Всегда используйте параметризованные запросы.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы