JPA通用Dao
import java.util.List;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.Parameter;
import javax.persistence.Query;
import javax.persistence.TypedQuery;
/**
*
* <一句話功能簡述>
* Dao是一個普通類,事物及EntityManager由調用方管理。
*
* @author s00120886
* @version [版本號, 2011-7-20]
* @see [相關類/方法]
* @since [產品/模塊版本]
*/
public class Dao
{
private EntityManager em;
public Dao(EntityManager em)
{
this.em = em;
}
public <T> List<T> fetchAll(Class<T> entity)
{
String jpql = "SELECT o FROM " + entity.getName() + " AS o";
TypedQuery<T> query = em.createQuery(jpql, entity);
return query.getResultList();
}
public <T> List<T> fetchByNamedQuery(String jpqlName,
Map<String, ?> parameters, Class<T> entity)
{
TypedQuery<T> query = em.createNamedQuery(jpqlName, entity);
for (Parameter<?> sqlParam : query.getParameters())
{
query.setParameter(sqlParam.getName(), parameters.get(sqlParam.getName()));
}
return query.getResultList();
}
public <T> List<T> fetch(String jpql, Map<String, ?> parameters,
Class<T> entity)
{
TypedQuery<T> query = em.createQuery(jpql, entity);
for (Parameter<?> sqlParam : query.getParameters())
{
query.setParameter(sqlParam.getName(), parameters.get(sqlParam.getName()));
}
return query.getResultList();
}
public int executeUpdate(String jpql, Map<String, ?> parameters)
{
Query query = em.createQuery(jpql);
for (Parameter<?> sqlParam : query.getParameters())
{
query.setParameter(sqlParam.getName(), parameters.get(sqlParam.getName()));
}
return query.executeUpdate();
}
public <T> T find(Class<T> entityClass, Object primaryKey)
{
return this.em.find(entityClass, primaryKey);
}
/**
* <一句話功能簡述>
* 只實現單個對象的持久化,如果批量持久化,由調用方控制何時flush或clear。
* @param <T>
* @param obj [參數說明]
*
* @return void [返回類型說明]
* @exception throws [違例類型] [違例說明]
* @see [類、類#方法、類#成員]
*/
public <T> void persist(T obj)
{
em.persist(obj);
}
public <T> void persist(List<T> objList)
{
for(T obj: objList)
em.persist(obj);
}
public <T> void remove(T obj)
{
em.remove(obj);
}
public void flush()
{
em.flush();
}
public void clear()
{
em.clear();
}
} 本文由用戶 johon 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!