JPA已经为我们提供了丰富的API接口,下面对它的各种API封装到一个抽象类中,我们的业务逻辑接口实现只要继承了这个抽象类,就可以用简单的代码实现各种操作。
增加操作:protected void persist(Object object) throws PersistenceException {
PersistenceException ex = null;
EntityManager em = getEntityManager();
em.getTransaction().begin();
try {
persist(em, object);
em.getTransaction().commit();
} catch (PersistenceException e) {
ex = e;
try {
em.getTransaction().rollback();
} catch (Exception innerException) {
}
} catch (Exception e) {
ex = new PersistenceException(e);
try {
em.getTransaction().rollback();
} catch (Exception innerException) {
}
} finally {
em.close();
}
if (ex != null) {
throw ex;
}
}
更新操作:protected <T> T merge(T object) throws PersistenceException {
T ro = null;
PersistenceException ex = null;
EntityManager em = getEntityManager();
em.getTransaction().begin();
try {
ro = merge(em, object);
em.getTransaction().commit();
} catch (PersistenceException e) {
ex = e;
try {
em.getTransaction().rollback();
} catch (Exception innerException) {
}
} catch (Exception e) {
ex = new PersistenceException(e);
try {
em.getTransaction().rollback();
} catch (Exception innerException) {
}
} finally {
try {
em.close();
} catch (Exception e) {
}
}
if (ex != null) {
throw ex;
}
return ro;
}
删除操作
protected void remove(Object object) throws PersistenceException {
PersistenceException ex = null;
EntityManager em = getEntityManager();
em.getTransaction().begin();
try {
em.remove(em.merge(object));
em.getTransaction().commit();
} catch (PersistenceException e) {
ex = e;
try {
em.getTransaction().rollback();
} catch (Exception innerException) {
}
} catch (Exception e) {
ex = new PersistenceException(e);
try {
em.getTransaction().rollback();
} catch (Exception innerException) {
}
} finally {
try {
em.close();
} catch (Exception innerException) {
}
}
if (ex != null) {
throw ex;
}
}
查询个数、列表
@SuppressWarnings("unchecked")
protected int getCount(Class clazz) {
EntityManager em = null;
try {
em = getEntityManager();
return em != null ? getCount(em, clazz) : 0;
} finally {
if (em != null) {
em.close();
}
}
}
@SuppressWarnings("unchecked")
protected <T> List<T> findEntityList(Class clazz) {
EntityManager em = getEntityManager();
try {
return (List<T>) em.createQuery(
"FROM " + clazz.getSimpleName() + " o").getResultList();
} finally {
em.close();
}
}