skillup

技術ブログ

Database Java

JPAでのデータベースとの同期

投稿日:2015年8月9日 更新日:

このブログでも何回か書いてきたJPAですが、新規レコードをインサートさせた際IDを取得し、そのIDをもとに何らかのキーを作る、そういう処理があったので紹介させていただきます。

何回か書いてますが、JPAのpersistはinsertではなく、あくまでそれ以降エラーがなければglassfishがコミットし、最終的にインサートされます。

なのでpersist直後にはIDが取得されません。

そのため冒頭にあげたような処理を行うことはできません。

いろいろ調べましたが、flushというメソッドを使うと、データベースと同期することができ、IDを取得できます。まだコミットはしていないので、エラーが発生したらロールバックします。

下記コードが処理の内容です。

リンクは下記を参考にしてます。もっとしっかりと理解しないとまずいなー

Glassfish JPA

-Database, Java
-

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

Javaでのログ出力 基礎編

Javaでのログ出力についてようわかってなかったので基礎から調べました。 Contents1 目的2 設定3 ソース4 出力5 リンク 目的 プログラムの実行過程を把握するため System.out. …

no image

オプティマイザと実行計画

データベースがSQLを受け取って処理を実行する前には下記のような段階があります。 Contents1 パーサー2 オプティマイザ3 カタログマネージャー4 参考リンク パーサー SQL構文のチェックし …

no image

GlassFish&Junitの不具合

JavaEE(JSF+JavaBean+EJB+JTA)でアプリを製作しているのですが、EJBの部分のjunitができないことが判明しました。 正確に言うとラムダ式を使うと不具合がでます。原因としては …

no image

Javaでの文字コード判定、変換

Javaにて文字コード判定の処理を書きます。 Contents1 通常の文字コードの判定、変換2 ファイルの文字コード判定、変換2.1 juniversalchardet2.1.1 ダウンロード2.1 …

no image

Javadocに関して

業務で社内で使うクラスライブラリを作成中です。 他人に使ってもらうものなのでコメントやドキュメント周りの整備が必要になり、javadocをしっかり作りたいと思っています。 Contents1 java …

アーカイブ