Встречается на собеседованиях • сегодня
Какие знаешь решения проблем при взаимодействии с БД
Вот основные проблемы и решения:
- N+1 проблема - когда для каждого объекта делается отдельный запрос. Решение:
java
// Hibernate: использовать JOIN FETCH
@Query("SELECT u FROM User u JOIN FETCH u.orders WHERE u.id = :id")
User findUserWithOrders(@Param("id") Long id);- Блокировки:
- Оптимистичная (версионирование)
java
@Entity
public class Account {
@Version
private Long version;
}- Пессимистичная (
SELECT ... FOR UPDATE)
-
Транзакции - использовать
@Transactionalс правильным уровнем изоляции. -
Проблемы производительности:
- Кэширование (Hibernate L2, Redis)
- Пакетная вставка:
java
em.setFlushMode(FlushModeType.COMMIT);
for (int i = 0; i < 1000; i++) {
em.persist(new Entity());
if (i % 50 == 0) em.flush();
}- Connection leaks - всегда закрывать ресурсы в
try-with-resources:
java
try (Connection conn = dataSource.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql)) {
// work with DB
}
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы