当通过springJdbcTemplate从db获取结果时,我看到他们每次都在传递RowMapper的新对象。 这需要吗?或者我们可以只使用一个对象并一次又一次地传递它。
#include<iostream>
using namespace std;
int main ()
{
int i,j;
double ave,scores,total=0.0;
for(j=1;j<=5;j++)
{
cout<<"Marks for Student"<<j<<":"<<endl;
for(i=1;i<=3;i++)
{
cout<<" subject"<<i<<":";
cin>>scores;
total+=scores;
}
ave=total/3;
cout<<endl;
}
return 0;
}
我知道这个对象以后会被垃圾收集,但我不想一遍又一遍地创建同一个对象。
我可以使用
吗?Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, new StudentRowMapper());
这有任何线程安全问题吗?
答案 0 :(得分:4)
为什么不创建RowMapper并让Spring管理它?每次都没有理由创建新实例。只需在Spring管理的那个中自动装配即可。只要你的映射器没有做任何非线程安全的事情,那么应该没问题。
@Component
...RowMapper class...
...
@Service
...WhateverService class...
@Autowired
private RowMapperClass theRowMapper;
public void doSomething() {
Student student = jdbcTemplateObject.queryForObject(SQL, new Object[] { id }, theRowMapper);
}
答案 1 :(得分:2)
是的,您应该能够重复使用该对象。
只要您的类是线程安全的,就没有问题。 JdbcTemplate是设计线程安全的