Я не согласен с большинством ответов до сих пор. Для большинства корпоративных приложений большая часть бизнес-логики встроена в запросы к базе данных, большинство в JPQL, если вы используете JPA, а некоторые могут быть довольно сложными. Это код, который вы пишете, и поэтому вы должны его проверить.
Если запросы просты - без сложных объединений или критериев - тогда это не столь серьезная проблема, но, по моему опыту, эти приложения редки, и вам, вероятно, не нужно что-то более мощное, чем JPA, для их создания , Вы будете платить с точки зрения масштабируемости для приложений, которые наивно пытаются сохранить свой уровень постоянства свободным от «бизнес-логики».
Для большинства приложений JPA жизненно важно, чтобы тесты выполнялись вне контейнера как часть вашей обычной, постоянно интегрированной сборки. Типичный способ сделать это - использовать базу данных в памяти, такую как HSQLDB или H2.
Java EE конкурирует с фреймворками, такими как Rails и Django, которые ожидают, что разработчик проведет модульное тестирование своего кода на реальной базе данных, специально предназначенной для этой цели. Разработчики JPA должны ожидать не меньше.