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

Streamでの特定条件化のカウント&合計値算出

Java8、streamで値を抽出し、カウントと合計値の算出について、小ネタです。 一番多いのがList<Map>タイプの値の検出です。 [crayon-6705f2882c2e81623 …

no image

データベースのインデックスについて

今回はデータベースのインデックスに関して。 検索条件を早くする場合、何よりも速度が速くなるのはインデックスを張ることでしょう。 インデックスを張ることは単語を索引順に並べることですので、劇的に速度が向 …

no image

アンチパターン データ分身の術+DBの不要な連携+バージョンアップ未テスト

今回のアンチパターンは主にデータ設計に関する部分。 Contents1 同一データの使用1.1 デメリット1.2 対策2 DBの不要な連携2.1 デメリット2.2 対策3 サーバーの移行やバージョンア …

no image

配列の参照の仕方

変数が存在しているにもかかわらず値が入っていないときは、プログラミングではNULLという表記をします。(ちなみに空白が入っているのとは違います。) これはプログラマにとってはほぼ常識的な内容なのですが …

no image

Javaのコーディングルール

私自身、Javaで仕事をするようになってから3ヶ月ちょっとがたちました。 もともとPHPで仕事はしていましたが、我流でやっていたこともあり、コーディングのルールとかがいい加減だったんですよね・・ ボス …

アーカイブ