Встречается на собеседованиях • сегодня
Как определить, нужно ли создавать новый объект библиотеки для работы с базой данных на каждый запрос в контроллере
Создавать новый объект библиотеки для работы с БД на каждый запрос — неэффективно. Лучше использовать пул соединений или паттерн 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. Потеря транзакционности
Исключение — специфические случаи с разными конфигурациями подключения, но это решается через фабрики/контексты.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы