JPA 设计模式系列一 DAO Pattern in JPA
2009-09-24 00:00:00 来源:WEB开发网DAO 接口
首先我们定义一个泛化的DAO接口,包括最常用的方法,比如:
public interface Dao<K, E> {
void persist(E entity);
void remove(E entity);
E findById(K id);
}
K ,E为泛型,你可以加其他的方法比如:List findAll().
然后我们定义一个自接口,实现特殊的方法,比如,我们想查找一定条件的Order信息:
public interface OrderDao extends Dao<Integer, Order> {
List<Order> findOrdersSubmittedSince(Date date);
}
基本DAO的实现
第三步就是创建基本的JPA DAO的实现。它实现了Dao接口。
public abstract class JpaDao<K, E> implements Dao<K, E> {
protected Class<E> entityClass;
@PersistenceContext
protected EntityManager entityManager;
public JpaDao() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass().getGenericSuperclass();
this.entityClass = (Class<E>) genericSuperclass.getActualTypeArguments()[1];
}
public void persist(E entity) { entityManager.persist(entity); }
public void remove(E entity) { entityManager.remove(entity); }
public E findById(K id) { return entityManager.find(entityClass, id); }
更多精彩
赞助商链接