Oto przykład z sekcji 14.2.5 Dokumentacja SpringJdbc. Nie otrzymałem tego, co próbowali powiedzieć tym kodem:
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
public class RunAQuery {
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public int getCount() {
return this.jdbcTemplate.queryForObject("select count(*) from mytable", Integer.class);
}
public String getName() {
return this.jdbcTemplate.queryForObject("select name from mytable", String.class);
}
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
}
Duplikacja metody setter dla obiektu dataSource zapobiega kompilacji tego kodu. Co oni naprawdę chcieli powiedzieć?
Odpowiedzi:
2 dla odpowiedzi № 1Drugi setDataSource
metoda jest błędem i nie powinna tam być. W przeciwnym razie ten kod pokazuje, jak JdbcTemplate
może być używany w DAO. Połączenia DB hermetyzowane przez szablon biorą udział w transakcjach i nie musisz przejmować się zamykaniem zasobów DB, takich jak kursory czy instrukcje.