Mam pytanie

Odnośnie realizacji wyświetlania wyników wyszukiwania podzielonych na strony.
Mam dwie metody, pierwsza to taka, że wynik zapytania zapisuje do obiektu, serializuje, wrzucam go do sesji a przy przejściu na następną stronę, pobieram go z sesji i wyświetlam wyniki dla tej strony.
Druga to zapamiętanie poszczegónych kryteriów jako osobne zmienne sesyjne i na następnej stronie ponowienie zapytania do bazy na podstawie zapisanych kryteriów.
Kryteriów wyszukiwania jest niewiele maksymalnie 5.
Chciałbym zapytać czy istnieje jakiś inny sposób, może lepszy, oraz jak Wy realizujecie wyświetlanie wyników przy stronicowaniu (chodzi mi o sam sposób zapamiętywnia, mechanizm stronicowania mam zrobiony).
pozdrawiam