Довольно старый пост, но все еще актуальный.
Если ваша таблица очень большая (миллионы записей), итерации с использованием findall () *. Delete () могут быть не лучшим вариантом, так как вы можете столкнуться с тайм-аутами транзакций (например, настройкой MySQL innodb_lock_wait_timeout), помимо заявленных потенциальных проблем с памятью от GreenGiant.
Так что, по крайней мере, для MySQL Innodb гораздо быстрее использовать TRUNCATE TABLE:
sessionFactory.currentSession
.createSQLQuery("truncate table ${sessionFactory.getClassMetadata(MyDomainClass).tableName}")
.executeUpdate()
Это полезно только в том случае, если на вашу таблицу другие объекты не ссылаются как на внешний ключ.