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

Как определить, нужно ли создавать новый объект библиотеки для работы с базой данных на каждый запрос в контроллере

Создавать новый объект библиотеки для работы с БД на каждый запрос — неэффективно. Лучше использовать пул соединений или паттерн Singleton.

В Spring, например, можно инжектить DataSource или JdbcTemplate как бины с областью видимости singleton (по умолчанию):

java
@Repository
public class UserRepository {
    private final JdbcTemplate jdbcTemplate;
text
public UserRepository(JdbcTemplate jdbcTemplate) {
    this.jdbcTemplate = jdbcTemplate;
}

public User findById(Long id) {
    return jdbcTemplate.queryForObject(
        "SELECT * FROM users WHERE id = ?", 
        (rs, rowNum) -> new User(rs.getLong("id"), rs.getString("name")),
        id
    );
}

}

text

**Почему не стоит создавать на каждый запрос:**
1. Нагрузка на JVM (лишние объекты)
2. Перерасход соединений (если не закрывать)
3. Потеря транзакционности

Исключение — специфические случаи с разными конфигурациями подключения, но это решается через фабрики/контексты.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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