package book.example.persistence.tests; import book.example.persistence.model.*; import javax.persistence.EntityManager; import javax.persistence.EntityTransaction; public class DatabaseCleaner { private static final Class<?>[] ENTITY_TYPES = { Customer.class, PaymentMethod.class, AuctionSiteCredentials.class, AuctionSite.class, Address.class }; private final EntityManager entityManager; public DatabaseCleaner(EntityManager entityManager) { this.entityManager = entityManager; } public void clean() { EntityTransaction transaction = entityManager.getTransaction(); transaction.begin(); for (Class<?> entityType : ENTITY_TYPES) { deleteEntities(entityType); } transaction.commit(); } private void deleteEntities(Class<?> entityType) { entityManager .createQuery("delete from " + entityNameOf(entityType)) .executeUpdate(); } private String entityNameOf(Class<?> entityType) { return entityType.getSimpleName(); } }