更新数据库时我应该选择什么?这两种方法的优缺点是什么?我应该在什么时候使用其中一种?
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();
}
原文由 Rox 发布,翻译遵循 CC BY-SA 4.0 许可协议
在您的第一个示例中,对数据的更改在遇到刷新后反映在数据库中,但它仍在事务中。
但在第二个示例中,您将立即提交交易。因此,对数据库进行了更改,事务也到此结束。
有时,刷新可能有助于在正在进行的事务之间持久保存数据,然后最终提交更改。因此,如果之后出现某些问题,您也可以回滚之前的更改,例如批量插入/更新。