如果我使用Hibernate,是否必须关闭ResultSet
和CallableStatement
?例如:
CallableStatement cstmt = sessionFactory.getCurrentSession()
.connection()
.prepareCall("{? = call PREQUEST.GetRequestList(?,?)}");
cstmt.registerOutParameter(1, OracleTypes.VARCHAR);
cstmt.setString(2, sessionId);
cstmt.executeUpdate();
cstmt.close(); // Closing
return cstmt.getString(1);
答案 0 :(得分:2)
Connection.close()
方法的JavaDoc以“立即释放此Connection对象的数据库和JDBC
资源开始,而不是等待它们自动释放。”
因此,如果您关闭()连接,将关闭所有获取的对象,例如Statements
和ResultSets
。
但是,如果您使用connection pool
,则close()
方法会返回与pool
的连接,并且实际上并未关闭连接。在这种情况下,依赖对象可以保持打开状态。在这种情况下,我认为最好手动关闭它们。