关闭resultSet和callableStatement

时间:2014-09-23 07:15:29

标签: java hibernate

如果我使用Hibernate,是否必须关闭ResultSetCallableStatement?例如:

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);

1 个答案:

答案 0 :(得分:2)

Connection.close()方法的JavaDoc以“立即释放此Connection对象的数据库和JDBC资源开始,而不是等待它们自动释放。”

因此,如果您关闭()连接,将关闭所有获取的对象,例如StatementsResultSets

但是,如果您使用connection pool,则close()方法会返回与pool的连接,并且实际上并未关闭连接。在这种情况下,依赖对象可以保持打开状态。在这种情况下,我认为最好手动关闭它们。