我们使用JDBC的标准代码部分是......
Connection conn = getConnection(...);
Statement stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rset = stmt.executeQuery (sqlQuery);
// do stuff with rset
rset.close(); stmt.close(); conn.close();
Run Code Online (Sandbox Code Playgroud)
问题1:使用连接池时,是否应该在结束时关闭连接?如果是这样,汇集失败的目的不是?如果没有,DataSource如何知道什么时候释放Connection的特定实例并且可以重用?我对这个有点困惑,任何指针都赞赏.
问题2:以下方法是否接近标准?看起来是尝试从池中获取连接,如果无法建立DataSource,请使用旧式DriverManager.我们甚至不确定哪个部分在运行时被执行.重复上面的问题,是否应该关闭连接出来的这种方法?
谢谢, - MS.
synchronized public Connection getConnection (boolean pooledConnection)
throws SQLException {
if (pooledConnection) {
if (ds == null) {
try {
Context envCtx = (Context)
new InitialContext().lookup("java:comp/env");
ds = (DataSource) envCtx.lookup("jdbc/NamedInTomcat");
return ds.getConnection();
} catch (NamingException e) {
e.printStackTrace();
}}
return (ds == null) ? getConnection (false) : ds.getConnection();
}
return DriverManager.getConnection(
"jdbc:mysql://"+ipaddy+":"+dbPort …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用hikaricp连接池.我能够让它工作并获得我可以使用的连接.我不确定返回池连接的最佳方法是什么.我应该在完成后关闭连接,依赖idletimeout和maxlifetime设置,还是有另一个我可以使用的呼叫,以免占用池中的连接?如果我关闭连接(而不是返回池),是否会导致创建其他连接对象以满足连接池大小的要求?寻找有用的建议