JPA应用技巧1:实体类和实体 DAO 模板 (二)

2014-11-24 02:33:36 · 作者: · 浏览: 4
ic List findRange(int first, int max) {
return getEntityManager().createQuery(findAllQuery, entityClass)
.setFirstResult(first).setMaxResults(max).getResultList();
}

public long count() {
return (Long) getEntityManager().createQuery(countQuery).getSingleResult();
}

public T merge(T entity) {
return getEntityManager().merge(entity);
}

public void remove(T entity) {
getEntityManager().remove(merge(entity));
}
}

子类只需要提供 getEntityManager() 的实现即可。假设楼主要做一个养鸡场管理系统(这将是贯穿本系列文章的例子),对鸡圈进行操作的会话 Bean 就可以简单地写成:

@Stateless
public class CoopDao extends BasicEntityDao {
@Persistence
private EntityManager em;

public CoopDao() {
super(Coop.class);
}

@Override
protected EntityManager getEntityManager() {
return em;
}

// 更多方法……
}