JPA CriteriaQuery vs Iteration

ルドルフ・シュミット

JPAでwhereステートメントを処理するための好ましい方法について疑問に思っています。

2つの方法があります。

次のような条件クエリを使用します

 CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Profile> c = cb.createQuery(Profile.class);
    Root<Profile> root = c.from(Profile.class);
    c.where(cb.equal(root.get(Profile_.email), email));
    List<Profile> resultList = em.createQuery(c).getResultList();

または、テーブル全体を選択して、Javaで繰り返します。

    CriteriaBuilder cb = em.getCriteriaBuilder();
    CriteriaQuery<Profile> c = cb.createQuery(Profile.class);
//    Root<Profile> root = c.from(Profile.class);
//    c.where(cb.equal(root.get(Profile_.email), email));
    List<Profile> resultList = em.createQuery(c).getResultList();

    for (Profile profile : resultList) {
      if (profile.getEmail().equals(email)) {
        //todo
      }
    }

推奨される方法は何ですか?また、どの長所と短所がありますか?

被告

最初のケースで結果として得られる選択は、2番目のケースでのインスタンスのフィルタリングよりも桁違いに高速に実行できます。

データベースはデータの選択において非常に高速で効率的であるため、最初のアプローチの欠点を認識していません。

2番目の方法の短所は、最初のアプローチを使用するときに実行する必要のないタスクです。

  • テーブル内のすべてのオブジェクトをインスタンス化する必要があります。レコードの数によっては、これは非常に高額になる可能性があり、最終的にはVMのメモリ制限を破裂させます。

  • すべてのオブジェクトを繰り返し、いくつかのメソッドを呼び出し、比較を行い、不要なインスタンスをガベージコレクションする必要があります。これも時間とリソースの浪費です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

JPA 2 CriteriaQueryの質問

JPA 2 CriteriaQuery、制限を使用

JPA 2-CriteriaQueryで@ElementCollectionを使用する

CriteriaQueryに対するjpa 2 hibernate limit(max results)

JPA2 / HibernateCriteriaまたはPostgresJSONタイプのCriteriaQuery

Recursion vs iteration with regards to memory usage

Generating Numerical Permutations (Iteration vs Recursion)

JPA 2では、CriteriaQueryを使用して、結果をカウントする方法

JPA CriteriaQuery各エンティティの最新データをクエリ

JPA CriteriaQueryを使用して2つの日付の違いを比較します

JPAのEntityManagercreateQuery()vs createNamedQuery()vs createNativeQuery()

JPQLの「join fetch」を「where」句でJPA 2 CriteriaQueryとして適切に表現する方法

CriteriaQuery(JPA 2.0)に関連付けられた定型コードの量を減らす方法はありますか?

JPA CriteriaQueryは、タイムスタンプを比較して時間部分を無視します

JPA CriteriaQuery:オブジェクトのフィールドがマップされません

Java Persistence / JPA:@Column vs @Basic

JPQLとCriteriaQueryの混合

JPA仕様(CriteriaQuery CriteriaBuilder)を使用した、フィルターされたOneToManyリレーションのフィールドによる順序

タイプがクラスまたはサブクラスであるという述語を持つJPA2.0 CriteriaQuery

Spring Data JDBC / Spring Data JPA vs Hibernate

Spring Data JDBC / Spring Data JPA vs Hibernate

Google App EngineでのJDO vs JPA for Java

Handle Concurrency Java level vs database/JPA level

Hibernate vs JPA vs JDO-それぞれの長所と短所?

CriteriaQueryのサブクエリ

CriteriaQueryの条件左結合

列挙型フィールドを持つエンティティでJPA CriteriaQueryを使用してDTOクラス文字列フィールドを設定するにはどうすればよいですか?

一部のフィールドがNULLになる可能性がある場合、JPAでcriteriaqueryの述語としてオブジェクトを使用できますか?

春JPA:保存VS saveandflushのコストは何ですか?

TOP 一覧

  1. 1

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    CSSのみを使用して三角形のアニメーションを作成する方法

  4. 4

    ドロップダウンリストで選択したアイテムのQComboBoxスタイル

  5. 5

    ZScalerと証明書の問題により、Dockerを使用できません

  6. 6

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  7. 7

    Windows 10でのUSB入力デバイスの挿入/取り外しの検出

  8. 8

    Excel - count multiple words per cell in a range of cells

  9. 9

    PictureBoxで画像のブレンドを無効にする

  10. 10

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  11. 11

    スタート画面にシャットダウンタイルを追加するにはどうすればよいですか?

  12. 12

    Python / SciPyのピーク検出アルゴリズム

  13. 13

    Luaの文字列から特定の特殊文字を削除するにはどうすればよいですか?

  14. 14

    Pythonを使用して、リストからデータを読み取り、特定の値をElasticsearchにインデックス付けするにはどうすればよいですか?

  15. 15

    LinuxでPySide2(Qt for Python)をインストールするQt Designerはどこにありますか?

  16. 16

    goormIDEは、ターミナルがロードするデフォルトプロジェクトを変更します

  17. 17

    QGISとPostGIS(マップポイント(米国の地図上にraduisを使用した緯度と経度)

  18. 18

    MLでのデータ前処理の背後にある直感

  19. 19

    ターミナルから「入力ソースの変更」ショートカットを設定する

  20. 20

    パンダは異なる名前の列に追加します

  21. 21

    同じクラスの異なるバージョンを使用したクラスローディング:java.lang.LinkageError:名前の重複クラス定義を試行しました

ホットタグ

アーカイブ