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

Netbeansのショートカット

超小ネタ。 Netbeansでのショートカットなど。 Contents1 整形2 サーバーログ消し&拡大3 インポートの挿入4 矩形選択5 関数の呼び出し元に戻る 整形 ショートカット(Alt+Shi …

no image

DB負荷調査のセオリー

DB負荷などで見ておきたいことのまとめなど。(今のプロジェクトではSQLServerを使っていますが、他のデータベースでも同じかと思います。) 参考URL SQLServer: 現在実行中クエリのリア …

no image

JavaEEのトランザクションに関して

最近あまり触れていないJavaEEのトランザクションについて。 JavaEEの場合、EJB環境では@Statelessを付けることによりトランザクション管理を行うことができます。 [crayon-64 …

no image

O/Rマッパー iciqlについて

以前、このブログでも紹介したO/Rマッパーのiciqlについて、使い方や問題点がある程度わかったので書いておきます。 Contents1 インストール2 自動生成3 注意点3.1 Date型のインポー …

no image

テストのダミーデータ作成

データベースに大量のデータを作りたいときにいつもあああやhoge,aaaですとデータという感じがしないですし、抽出や集計ができません。 なるべく自然に近いデータが欲しいのですが、簡単に作れる方法があり …

アーカイブ