package com.acme.jpa; import javax.persistence.EntityManager; public abstract class AbstractRepository<T> { public void create(T entity) { create(entity, false); } public void create(T entity, boolean flush) { getPersistenceContext().persist(entity); if (flush) { getPersistenceContext().flush(); } } public long getRecordCount() { return (Long) getPersistenceContext().createQuery("select count(e) from " + getEntityName() + " e").getSingleResult(); } public void purge() { getPersistenceContext().createQuery("delete from " + getEntityName()).executeUpdate(); } public abstract EntityManager getPersistenceContext(); public abstract String getEntityName(); }