单个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

回到顶部