Можем ли мы получить результаты, используя один объект RowMapper вместо создания объектов каждый раз?
При извлечении результатов из db через springJdbcTemplate везде я видел, что они каждый раз передают новый объект RowMapper. Это обязательно? Или мы можем просто использовать один объект и передавать его снова и снова.
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, new StudentRowMapper());
Я знаю, что этот объект будет собирать мусор позже, но я не хотел создавать один и тот же объект снова и снова.
Могу ли я использовать
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, this.studentMapper);
?
Есть ли какие-либо проблемы безопасности потока?
2 ответа
Почему бы просто не создать свой RowMapper и позволить Spring управлять им? Не должно быть никаких причин создавать новый экземпляр каждый раз. Просто autow ire в той, которой управляет Spring. Пока ваш маппер не делает ничего не поточно-ориентированного, тогда все должно быть в порядке.
@Component
...RowMapper class...
...
@Service
...WhateverService class...
@Autowired
private RowMapperClass theRowMapper;
public void doSomething() {
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, theRowMapper);
}
Да, вы должны иметь возможность повторно использовать объект.
Пока ваш класс потокобезопасен, проблем не возникает. JdbcTemplate является поточно-ориентированным