Если нужно заполнять такие таблицы из других источников, то jdbc с batch insert (без hibernate), можно в несколько потоков.
Если запросы на выборку достаточно сложные, то предпочитаю использовать stored procedures, которые возвращают курсор. А этот курсор уже можно обрабатывать через hibernate.