当我调用EntityManager的更新或删除方法时,我首先需要通过调用find()来管理实体。但这意味着双重访问数据库。我做错了还是唯一的方法?
答案 0 :(得分:0)
我不确定我是否理解正确。但如果你的意思是你必须做类似的事情
Employee employee = em.find(Employee.class, 1);
em.getTransaction().begin();
em.remove(employee);
em.getTransaction().commit();
然后是的,你必须这样做:)
答案 1 :(得分:0)
使用' EntityManager'的merge
或remove
方法你需要在参数中传递实体对象。
您还可以使用native queries
(em.createNativeQuery
),它可以让您执行任何所需的请求。
毕竟,JPA有一个缓存层,可以防止不必要的请求一直进入数据库。当您调用find(id)
时,JPA将首先尝试从缓存中检索它(如果之后未进行修改)。
所以,不要担心