package jpasearch.repository;
import java.io.Serializable;
import jpasearch.domain.Identifiable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author speralta
*/
public abstract class JpaSimpleRepository<E extends Identifiable<PK>, PK extends Serializable> extends JpaGenericRepository<E, PK> implements SimpleRepository<E, PK> {
private final Logger logger = LoggerFactory.getLogger(getClass());
public JpaSimpleRepository(Class<E> type) {
super(type);
}
@Override
public final E getById(PK id) {
return getEntityManager().find(getType(), id);
}
@Override
public final E save(E entity) {
E result = getEntityManager().merge(entity);
logger.debug("Entity merged {}.", result);
postSave(result);
return result;
}
@Override
public final void delete(E entity) {
E toRemove = getEntityManager().find(getType(), entity.getId());
getEntityManager().remove(toRemove);
logger.debug("Entity removed {}.", toRemove);
postDelete(toRemove);
}
// Could be overriden
protected void postSave(E entity) {
}
protected void postDelete(E entity) {
}
}