我们可以使用一个RowMapper对象获取结果,而不是每次都创建对象吗?

时间:2016-01-22 16:26:14

标签: java spring jdbc spring-jdbc

当通过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());

这有任何线程安全问题吗?

2 个答案:

答案 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是设计线程安全的