gpt4 book ai didi

java - 单个 DAO 和通用 CRUD 方法(JPA/Hibernate + Spring)

转载 作者:IT老高 更新时间:2023-10-28 20:37:16 26 4
gpt4 key购买 nike

在我之前的问题之后,DAO and Service layers (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);
}
}

关于java - 单个 DAO 和通用 CRUD 方法(JPA/Hibernate + Spring),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888575/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com