tomcat数据源和jdbctemplate

时间:2017-03-17 14:11:43

标签: java spring connection-pooling jdbctemplate tomcat-jdbc

我之前已经使用spring DI单独为我的两个Web应用程序注入数据源(并使用jdbctemplate进行数据库操作),但后来我认为最好在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;
    }

添加更多细节以解释我的场景,我在for循环中将子arraylist更新为db。所以,我认为有连接池可以更快地完成任务

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)因为,我使用new运算符创建了jdbctemplate,jdbctemplate和pstmt将被应用程序安全关闭

最后,多线程是否会使更新操作更快?

我希望我的问题陈述是可以理解的

0 个答案:

没有答案