package org.compass.gps.device.jpa;
import javax.persistence.EntityTransaction;
import javax.persistence.PersistenceException;
/**
* A JPA Resource Local only {@link EntityManagerWrapper} implementation. Creates the
* <code>EntityManager</code>, and an <code>EntityTransaction</code>.
*
* @author kimchy
*/
public class ResourceLocalEntityManagerWrapper extends AbstractEntityManagerWrapper {
private EntityTransaction transaction;
@Override
protected void beginTransaction() throws PersistenceException {
transaction = entityManager.getTransaction();
transaction.begin();
}
@Override
protected void commitTransaction() throws PersistenceException {
if (transaction == null) {
return;
}
try {
transaction.commit();
} finally {
transaction = null;
}
}
@Override
protected void rollbackTransaction() throws PersistenceException {
if (transaction == null) {
return;
}
try {
transaction.rollback();
} finally {
transaction = null;
}
}
@Override
protected boolean shouldCloseEntityManager() {
return true;
}
}