code: public void release() {
          try {
              if(hasCoreConnection()) {
                  checkThreadBinding();
                  this.setClosed(true);
                  this.getCoreConnection().reset();
                  this.fireConnectionReleased();
  
              }
          } finally {
              this.setClosed(true);
  
              // state may be important for Stat-Listener, so its set after the listener did their work
              setTransactionalData(false);
  
              this.releaseThreadBinding();
          }
      }
docs: Implementation of releasing the connection from transactional context