5
也許一個愚蠢的問題,但如果EntityManager.merge()拋出異常,是否有必要在catch-block中的事務上進行回滾? 或者異常本身是否意味着合併不會工作,以便下一次運行提交時,以前發生的異常將不會應用?是否有必要對catch-block中的事務進行回滾?
例子:
public void setPerson(Person person) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("MyLib");
EntityManager em = emf.createEntityManager();
try {
if(!em.getTransaction().isActive()){
em.getTransaction().begin();
}
em.merge(person);
em.getTransaction().commit();
emf.getCache().evict(Person.class); // clear Person cache
} catch (Exception ex){
em.getTransaction().rollback(); // Is this necessary?
} finally {
em.close();
}
}
但是你可以說在catch塊中有回滾沒有傷害嗎?我對嗎? – Rox 2012-04-18 08:20:11
@Rox它不僅沒有傷害,如果你想避免一些不良影響,它可能是必要的。 – 2012-04-18 08:21:20