单个DAO和通用CRUD方法(JPA /hiberbate+spring)
继上一个问题DAO和Service层(JPA / Hibernate +
Spring)之后,我决定在使用JPA /
Hibernate,Spring和Wicket的应用程序中(至少在开始时)仅对我的数据层使用一个DAO。提出了使用通用CRUD方法的方法,但是我不太确定如何使用JPA来实现。您能否举个例子或分享有关此的链接?
回答:
这是一个示例界面:
public interface GenericDao<T, PK extends Serializable> { T create(T t);
T read(PK id);
T update(T t);
void delete(T t);
}
和一个实现:
public class GenericDaoJpaImpl<T, PK extends Serializable> implements GenericDao<T, PK> {
protected Class<T> entityClass;
@PersistenceContext
protected EntityManager entityManager;
public GenericDaoJpaImpl() {
ParameterizedType genericSuperclass = (ParameterizedType) getClass()
.getGenericSuperclass();
this.entityClass = (Class<T>) genericSuperclass
.getActualTypeArguments()[0];
}
@Override
public T create(T t) {
this.entityManager.persist(t);
return t;
}
@Override
public T read(PK id) {
return this.entityManager.find(entityClass, id);
}
@Override
public T update(T t) {
return this.entityManager.merge(t);
}
@Override
public void delete(T t) {
t = this.entityManager.merge(t);
this.entityManager.remove(t);
}
}
以上是 单个DAO和通用CRUD方法(JPA /hiberbate+spring) 的全部内容, 来源链接: utcz.com/qa/410137.html