我正在使用HikariDataSource连接到MariaDB数据库。下面的类返回一个Connection.public class DataSource {private HikariDataSource ds;// The constructor takes db name as an argument and creates a new datasource for the connection accordingly.public DataSource(String dbString) { HikariConfig config = new HikariConfig(); Map map = DbConfigParser.configKeyValue(dbString); config.setJdbcUrl(String.valueOf(map.get("uri"))); config.setUsername(String.valueOf(map.get("uname"))); config.setPassword(String.valueOf(map.get("pwd"))); config.addDataSourceProperty("cachePrepStmts", "true"); config.addDataSourceProperty("prepStmtCacheSize", "250"); config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); ds = new HikariDataSource(config);}// Returns a Connection to the databasepublic Connection getConnection() throws SQLException { return ds.getConnection();}// Close the datasourcepublic void close(){ if (ds != null) { ds.close(); } }}这是执行选择查询的方法。该类还包含一个关闭方法public List<DataFile> getAllFiles() throws SQLException {try (Connection connection = dataSource.getConnection(); DSLContext ctx = DSL.using(connection, SQLDialect.MARIADB)) { List<DataFile> dataFileList = new DataFileQueries().selectQuery(ctx) .fetchInto(DataFile.class); if (dataFileList == null || dataFileList.isEmpty()) { throw new IllegalStateException("The List is Empty!"); } return dataFileList; }}public void close() {try { dataSource.close();} catch (Exception e) { LOG.error("A SQLException was caught", e); }}try-with-block 会Connection自动关闭对象,但是如何关闭连接池呢?我是否应该在数据库操作之后调用调用 close 方法,例如public static void main(String[] args) throws SQLException {DataFileDaoImpl service = new DataFileDaoImpl("testi");List<DataFile> list = service.getAllFiles();list.stream().forEach( e -> System.out.println(e.toString()));service.close();}当我不调用该close()方法时,我看不到任何有关关机启动的控制台输出。这是关闭HikariDataSource和连接池的正确方法吗?
添加回答
举报
0/150
提交
取消