我正在尝试创建一个我可以继承的存储库类,以从中获取基本的CRUD功能. EntityManager.find(..)需要一个Class参数.但是,你不能把T传递给它(由于某种原因我还不明白……类型擦除).所以我找到了返回实体类的方法,并从我看到的另一个问题中添加了它.首先,它是如何工作的,第二,它会对性能产生多大影响?我看到它使用反射.
@Stateless
public abstract class AbstractSqlRepository implements Repository {
@PersistenceContext
private EntityManager entityManager;
@Override
public void create(T entity) {
entityManager.persist(entity);
}
@Override
public T find(int id) {
return entityManager.find(getEntityClass(), id);
}
@Override
public T update(T entity) {
return entityManager.merge(entity);
}
@Override
public void remove(T entity) {
entityManager.remove(entity);
}
public EntityManager getEntityManager() {
return entityManager;
}