私は現在、デスクトップアプリケーションでJPAを試していますが、GUI開発を容易にするためにBeansBindingを使用しています。これまでのところ、結果はかなり良好です。
サンプルアプリケーションとして、テーブルが1つしかない小さなDBがあります。エンティティPUを正常に作成しました。次に、JTableをメインのJFrameにドロップし、その列をJPAクエリにバインドしました。これは魅力のように機能します。したがって、エンティティに加えられた変更はテーブルに反映され、その逆も同様です。
次に、変更がDBに保持されるように、テーブルを編集可能にしたいと思いました。私が思いついた最も簡単な方法は、クエリを開始してすぐにコミットすることでした。したがって、どこかにJButtonがあると仮定して、次の手順を実行しますactionPerformed
。
private void saveClicked(java.awt.event.ActionEvent evt) {
this.myEntityManager.getTransaction().begin();
this.myEntityManager.getTransaction().commit();
}
これは完璧に機能しますが、私には奇妙に間違っているように見えます。私もこれをやろうとしましたwindowClosing
。成功しました。
しかし、なぜこれが機能したのですか?つまり、トランザクションbegin
と。の間にコードはありませんcommit
。そしてもっと重要なことに、これを行っても大丈夫ですか?