Flush будет отправлять только данные sql на сервер базы данных.Коммит передает его в базу данных сам.Данные будут доступны для запроса только после фиксации.
Имейте в виду, что это верно только в том случае, если ваш уровень изоляции «зафиксирован для чтения» (настройка по умолчанию), а при использовании «чтение незафиксировано» данные запрашиваются после их отправки.в базу данных (flush принудительно вызовет sql в базу данных).
edit: Thx stefan для комментирования уровня изоляции