DatasSourceBuilder 与 DriverManagerDataSource
DatasSourceBuilder vs DriverManagerDataSource
使用 DatasSourceBuilder 创建数据源
@Bean
DataSource dataSource() throws SQLException {
DatasSourceBuilder dataSource = DatasSourceBuilder.create();
dataSource.url("");
...
..
return dataSource.build();
}
正在使用 DriverManagerDataSource 创建数据源
@Bean
DriverManagerDataSource dataSource() throws SQLException {
DriverManagerDataSource dataSource = DriverManagerDataSource();
dataSource.setUrl("");
...
..
return dataSource;
}
我正在使用上述两种方法创建 jdbc
@Bean
public JdbcTemplate jdbcTemplate()
{
return new jdbcTemplate(dataSource());
}
我正在使用 jdbc模板如下
void m1()
{
simpleJdbc = new simpleJdbc(jdbcTemplate);
simpleJdbc.execute(procedure)
}
所以我的问题是如果我重复调用 m1() 50 次那么在这两种情况下将创建多少连接,即 DriverManagerDataSource 和 DatasSourceBuilder
简单的答案是
DriverManagerDataSource
-> 调用方法的连接数
DataSourceBuilder
-> 最大池大小指定的连接数 属性。
然而,真正的答案是视情况而定。如果您在单个事务中调用 m1
并调用它 50 次,那么它将以任何一种方式打开一个连接。打开的连接绑定到事务上,重复使用
也就是说,您不应该将 DriverManagerDataSource
用于生产就绪应用程序。它不是连接池,会在需要时打开连接,打开连接很慢,它会创建无限数量的连接(取决于需要)所以如果你有 100 个请求需要连接,它会打开 100 个连接(可能淹没你的数据库)。
仅将 DriverManagerDataSource
用于测试和演示,而不用于生产应用程序。
使用 DatasSourceBuilder 创建数据源
@Bean
DataSource dataSource() throws SQLException {
DatasSourceBuilder dataSource = DatasSourceBuilder.create();
dataSource.url("");
...
..
return dataSource.build();
}
正在使用 DriverManagerDataSource 创建数据源
@Bean
DriverManagerDataSource dataSource() throws SQLException {
DriverManagerDataSource dataSource = DriverManagerDataSource();
dataSource.setUrl("");
...
..
return dataSource;
}
我正在使用上述两种方法创建 jdbc
@Bean
public JdbcTemplate jdbcTemplate()
{
return new jdbcTemplate(dataSource());
}
我正在使用 jdbc模板如下
void m1()
{
simpleJdbc = new simpleJdbc(jdbcTemplate);
simpleJdbc.execute(procedure)
}
所以我的问题是如果我重复调用 m1() 50 次那么在这两种情况下将创建多少连接,即 DriverManagerDataSource 和 DatasSourceBuilder
简单的答案是
DriverManagerDataSource
-> 调用方法的连接数DataSourceBuilder
-> 最大池大小指定的连接数 属性。
然而,真正的答案是视情况而定。如果您在单个事务中调用 m1
并调用它 50 次,那么它将以任何一种方式打开一个连接。打开的连接绑定到事务上,重复使用
也就是说,您不应该将 DriverManagerDataSource
用于生产就绪应用程序。它不是连接池,会在需要时打开连接,打开连接很慢,它会创建无限数量的连接(取决于需要)所以如果你有 100 个请求需要连接,它会打开 100 个连接(可能淹没你的数据库)。
仅将 DriverManagerDataSource
用于测试和演示,而不用于生产应用程序。