Zend Framework 2.5でSELECT処理について、以下の違いを知りたいです。

【Modelでのソース】

1.TableGatewayのセレクト機能

$resultSet = $this->tableGateway->select();
return $resultSet;

2.$statement->execute();

$sql = new Sql( $this->tableGateway->adapter );
$select = $sql->select();
$select->from('hogehoge');
// 作成したクエリを使用してステートメントを作成する
$statement = $sql->prepareStatementForSqlObject($select);
$resultSet = $statement->execute();
return $resultSet;

上記1では、取得したデータを複数回foreachで使用するため、bufferに入れています。

$resultSet->buffer();

上記2では、同様の処理をしても、bufferの機能が利用できず、foreachが複数回実行できません。
以下のエラーが発生します。

This result is a forward only result set, calling rewind() after moving forward is not supported

お手数をおかけしますが、対応方法をご教授いただけますでしょうか?
以上です、よろしくお願いいたします。