Entitymanager.flush () VS EntityManager.getTransaction (). Commit - O que devo preferir?

O que devo preferir ao atualizar o banco de dados? Quais são os prós e contras do método e quando devo usar um ou outro?

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();
}

questionAnswers(5)

yourAnswerToTheQuestion