When fetching results from database through SpringJdbcTemplate, everywhere I have seen that they are passing the new object of
RowMapper` every time.
Is this required? Or can we just use one object and pass it again and again?
Example:
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, new StudentRowMapper());
I know this object will be garbage collected later on, but I didn't wanted to create the same object over and over again.
Can I reuse the row mapper instance, like this?:
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, this.studentMapper);
Has this any thread safety issue?
Why not just create your RowMapper
and let Spring manage it? There should be no reason to create a new instance every time. Just autowire in the one managed by Spring. As long as your mapper isn't doing anything non-thread-safe, then should be just fine.
@Component
private RowMapper class...
...
@Service
WhateverService class...
@Autowired
private SomeRowMapper theRowMapper;
public void doSomething() {
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, theRowMapper);
}
Yes you should be able to reuse the object.
As long as your class is thread safe there is no issue. JdbcTemplate is thread safe by design
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With