2016-12-31 3 views
0

Почему мы должны объединять объект до его удаления?
какой из этих эффективных?Почему мы должны объединять объект до удаления в jpa/hibernate

public void removeStudent(int i){ 
    Student studentD = entityManager.find(Student.class, i); 
    tx.begin(); 
    entityManager.remove(studentD); 
    tx.commit(); 
} 

public void removeStudent(Student student){ 
    Student studentD = entityManager.merge(student); 
    entityManager.remove(studentD); 
} 
+0

Зачем вам сливаться перед удалением? Единственное, что вам нужно удалить, - это «управляемый» объект, поэтому слияние в некоторых изменениях до удаления бессмысленно ... совершенно бессмысленно –

ответ

0
public void removeStudent(int i){ 
    Student studentD = entityManager.find(Student.class, i); 
    tx.begin(); 
    entityManager.remove(studentD); 
    tx.commit(); 
} 

Этот код поражения цели с помощью операций на всех, не никогда использовать его. Вызов EntityManager.find должен находиться в пределах транзакции, чтобы убедиться, что вы не пытаетесь удалить сущность, которая больше не существует.

Если вам нужна ссылка на объект с единственной целью его удаления, используйте EntityManager.getReference вместо EntityManager.find.

Смежные вопросы