gpt4 book ai didi

java - Entitymanager.flush() VS EntityManager.getTransaction().commit - 我应该更喜欢什么?

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

更新数据库时我应该更喜欢什么?这两种方法的优缺点是什么?我什么时候应该使用其中一种?

public void disemployEmployee(Integer employeeId, Date endDate) {
Employee employee = (Employee)em.find("Employee", employeeId);
employee.getPeriod().setEndDate(endDate);
em.flush();
}

public void disemployEmployee(Integer employeeId, Date endDate) {
Employee employee = (Employee)em.find("Employee", employeeId);
em.getTransaction().begin();
employee.getPeriod().setEndDate(endDate);
em.getTransaction().commit();
}

最佳答案

在您的第一个示例中,对数据的更改在遇到刷新后反射(reflect)在数据库中,但它仍在事务中。

但在第二个示例中,您正在立即提交事务。因此,对数据库进行了更改,事务也到此结束。

有时,刷新可能有助于在正在进行的事务之间保留数据,然后最终提交更改。因此,如果之后出现问题,您也可以回滚之前的更改,例如批量插入/更新。

关于java - Entitymanager.flush() VS EntityManager.getTransaction().commit - 我应该更喜欢什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11048177/

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