Источник данных Tomcat и jdbctemplate
Ранее я внедрял источник данных (и использовал jdbctemplate для операций с БД), используя Spring DI отдельно для двух моих веб-приложений, но затем я считаю, что лучше использовать источник данных и пул соединений на уровне Tomcat. Итак, теперь я получаю источник данных из jndi и создаю jdbctemplate, используя этот источник данных
public static DataSource getTomcatDataSource() {
DataSource dataSource = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:/comp/env");
dataSource = (DataSource) envContext.lookup("jdbc/vendorDB");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
return dataSource;
}
Добавляя больше деталей для объяснения моего сценария, я обновляю субаррайлист в db внутри цикла for. Итак, я думал, что наличие пула подключений завершит задачу быстрее
for(int fromIndex = 0, toIndex = (fromIndex + batchSize - 1);
fromIndex < (sheetList.size() - 1) ;
fromIndex = toIndex + 1, toIndex += batchSize){
....
List<GoogleSheetPojo> subSheetList = sheetList.subList(fromIndex, toIndex);
try {
jdbcTemplate = new JdbcTemplate(DatabaseUtility.getTomcatDataSource());
rowsEffected = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement pstmt, int i) throws SQLException {
MyPojo bean = subSheetList.get(i);
....
}
}
}
}
Итак, у меня было несколько сомнений здесь:
1) Операции обновления станут быстрыми?
2) мой метод источника данных является статическим, поэтому приложение будет использовать одно соединение с базой данных, или я должен получить источник данных без статического соединения для использования пула соединений с базой данных?
2) поскольку я создал jdbctemplate с помощью оператора new, будет jdbctemplate и pstmt будет безопасно закрыто приложением
Наконец, многопоточность ускорит операцию обновления?
Я надеюсь, что моя постановка проблемы понятна