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

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

Вот основные проблемы и решения:

  1. 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);
  1. Блокировки:
  • Оптимистичная (версионирование)
java
@Entity
public class Account {
    @Version
    private Long version;
}
  • Пессимистичная (SELECT ... FOR UPDATE)
  1. Транзакции - использовать @Transactional с правильным уровнем изоляции.

  2. Проблемы производительности:

  • Кэширование (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();
}
  1. Connection leaks - всегда закрывать ресурсы в try-with-resources:
java
try (Connection conn = dataSource.getConnection();
     PreparedStatement stmt = conn.prepareStatement(sql)) {
    // work with DB
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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