Можем ли мы получить результаты, используя один объект 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 является поточно-ориентированным

Другие вопросы по тегам