В настоящее время я экспериментирую с JPA в настольном приложении, одновременно используя BeansBinding, чтобы упростить разработку графического интерфейса. Пока что результаты неплохие.
В качестве примера приложения у меня есть небольшая БД с одной таблицей. Я успешно создал сущность, ПУ. Затем я поместил JTable в основной JFrame и связал его столбцы с запросом JPA. Это работает как шарм. Итак, изменения, внесенные в сущности, отражаются в таблице и наоборот.
Затем я хотел сделать таблицу редактируемой, чтобы изменения сохранялись в БД. Самый простой способ, которым я придумал, - это начать запрос и немедленно его зафиксировать. Итак, предполагая, что у меня где-то был JButton, выполните на actionPerformed
следующее:
private void saveClicked(java.awt.event.ActionEvent evt) {
this.myEntityManager.getTransaction().begin();
this.myEntityManager.getTransaction().commit();
}
Это прекрасно работает, но выглядит странно неправильно для меня. Я также пытался сделать это на windowClosing
. С успехом.
Но почему это работает? Я имею в виду, что между транзакцией begin
и commit
нет никакого кода. И что более важно, это О.К. сделать это?