Встречается на собеседованиях • сегодня

Какие знаешь проблемы при взаимодействии с БД

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); ```
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы