Вы можете запустить отдельные тесты или, если применимо, группы тестов как одну транзакцию, а затем выполнить откат в конце. (Это может быть сложно, если сами тесты содержат несколько транзакций и ваша база данных не поддерживает вложенные транзакции или точки сохранения.)
Кроме того, ваша тестовая база данных может быть создана с помощью сценариев. Здесь может помочь DbUnit, как и другие генераторы баз данных, такие как LiquiBase , dbmaintain , dbmigrate Затем вы можете удалить всю базу данных и создать заново для каждого теста или теста группа. Полезность этого подхода уменьшается по мере того, как набор тестовых данных становится большим и увеличивается объем служебных данных.
Последний вариант - не допускать зависимости ваших тестов от сгенерированного идентификатора, поскольку в зависимости от сгенерированного значения будут создаваться хрупкие тесты. Полезно проверить сгенерированный идентификатор, поэтому проверьте эти значения для некоторых тестов, но я не уверен, что стоит тестировать идентификаторы для всех тестов.
РЕДАКТИРОВАТЬ: ОП спросил об использовании спящего режима для воссоздания схемы. Это можно сделать, создав новую SessionFactory для каждого теста и установив "hibernate.hbm2ddl.auto" в "true" при сборке SessionFactory. Я упоминаю о снижающейся эффективности drop-create - она применима и к этому случаю.