Встречается на собеседованиях • сегодня
Какие знаешь проблемы при взаимодействии с БД
1. **N+1 проблема** - когда для каждого объекта из списка делается отдельный запрос. Решение: использовать JOIN FETCH или batch fetching.
```java
// Проблема
List orders = em.createQuery("SELECT o FROM Order o").getResultList();
for (Order o : orders) {
o.getItems(); // Дополнительный запрос для каждого заказа
}
// Решение
List orders = em.createQuery(
"SELECT o FROM Order o JOIN FETCH o.items", Order.class).getResultList();
```
2. **Отсутствие индексов** - медленные запросы из-за полных сканирований таблиц. Решение: добавлять индексы на часто запрашиваемые поля.
3. **Утечки соединений** - незакрытые Connection. Решение: использовать try-with-resources:
```java
try (Connection conn = dataSource.getConnection();
Statement stmt = conn.createStatement()) {
// работа с БД
}
```
4. **Проблемы транзакций** - долгие транзакции блокируют ресурсы. Решение: уменьшать область транзакции, использовать изоляцию READ_COMMITTED.
5. **SQL-инъекции** - уязвимость при конкатенации строк. Решение: использовать PreparedStatement:
```java
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM users WHERE login = ?");
stmt.setString(1, userInput);
```

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