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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!