В java я достаточно недавно. Возникло недопонимание в плане правильности высвобождения connection взятого из пула. Я использую try с ресурсами, но более опытные коллеги говорят, что так закрывать нельзя, поскольку это приведет к тому, что все connection из пула будут израсходованы.
Пример кода:
public void saveUser(User user) {
try (
Connection connection = connectionPool.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement(
"INSERT INTO users (id, login, pass) VALUES (nextval('sqn_user'),?,?)")) {
preparedStatement.setString(1, user.getUserLogin());
preparedStatement.setString(2, user.getUserPass());
preparedStatement.execute();
connection.commit();
} catch (SQLException e) {
log.error(e);
}
}
Можно ли в данном примере использовать try с ресурсами, или нужно закрывать по старинке?
В качестве connectionpool используется Hikari
HikariDataSource dataSource;
HikariConfig config = new HikariConfig();
config.setDriverClassName("org.postgresql.Driver");
config.set...url,username,password;
config.setAutoCommit(false);
config.setMaximumPoolSize(50);
dataSource = new HikariDataSource(config);
dataSource.setInitializationFailFast(true);