2011-01-03 8 views
6

エンティティがJPAを使用してデータベースに既に存在するかどうかを確認する最善の方法/ベストプラクティスは何ですか?Java JPA:EntityがすでにDBに入っているかどうかチェックする

DBにホスト情報を追加するクライアントを作成しています。たとえば、接続されたストレージLUN、hbaなど...

ホストにLunを追加する場合は、lunがすでにデータベースに入っているかどうかを確認する必要があります。 (Lunはすでに別のホストに接続できます)。

私は2 possibilites参照:

  1. を私はそれが倫を挿入し、例外(一意性制約)をチェックするためにDB
  2. てみに既に存在するかどうかを確認するために、LUNの選択作る

誰かがそれを経験していますか?

BR、ルネ

答えて

7
entityManager.find(SomeEntity.class, id) 

戻り値: たエンティティインスタンスまたはnullエンティティが

存在しない場合、これはDB内の単純な選択を行います。あなたのコレクション(ある場合)が怠け者であることを確認してください。

+0

トランザクション型UIクライアント(ベストプラクティス)であれば問題ありません。バルクモードでのパフォーマンスを向上させるには、作成を試みて(まれな)「既に存在する例外」をキャッチする方が速くなります。 (実際にはエンティティの存在の確率に依存しますが、多くの例外がある場合はエンティティの存在をテストする方が速くなります)。 – snowflake

+0

IDがわからない場合はどうすればいいですか? – reen

+0

他のフィールドのJPQLクエリを作成します。 – Bozho

4

私は一意の制約の例外をチェックする方が良い方法だと思います。すべてのインサートのコストを考えてみてください。

+0

ええ、それは私がやったことです。エンティティを永続させ、適切な方法で例外を処理するだけで、最終的にどのフィールドが無効であるかをユーザーに通知することができます。 –

関連する問題