タグ

2017年3月1日のブックマーク (3件)

  • JPA 2.1 の新機能 Entity Graphs まとめ - A Memorandum

    Entity Graphs とは Entity Graph の構成 Graph アノテーションと Graph API 簡単な利用例 Fetch Graph と Load Graph Attribute Node の定義 Subgraph の定義 Subgraph の複数参照 継承構造の Graph 定義 ルート継承構造の Graph Map Key Subgraphs タイプセーフな属性定義 Entity Graph の取得 名前付きの Entity Graph への追加 Entity Graph の利用 Entity Graphs とは JPA 2.1 では Entity Graph を使うことで fetch 計画を指定できるようになりました。これにより query や find で取得する対象ををカスタマイズできるようになります。同じ Entity から様々なデータの見せ方が必要で、時

    JPA 2.1 の新機能 Entity Graphs まとめ - A Memorandum
    tvsk
    tvsk 2017/03/01
    entity graph
  • JPAで少しずつデータを処理する方法を考える - n-agetsumaの日記

    OutOfMemoryErrorの主な要因例として、DBMSからデータを取得しすぎがあります。 LASYフェッチによるN + 1 問題を回避するために、結合先テーブルの要素を一気に持ってくるJOIN FETCHを使ったところ、引き換えにJavaヒープ使用量が多くなるのはよくあるケースです。 以下のような、1つのIssueに対して複数のIssueAttributeを持つ1対多関連のエンティティの操作を例に、OutOfMemoryErrorを少しでも避ける方法を考えてみます。 @Entity public class Issue implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue private int issueId; private String tit

    JPAで少しずつデータを処理する方法を考える - n-agetsumaの日記
    tvsk
    tvsk 2017/03/01
    JOIN FETCHを実際に使ったときの躓き点
  • わかりやすいJPA (5):JOIN FETCH

    はじめに これはJPAを解説する連載の5回目です。 うっかりすると、JPQLでは予期しなかった大量のSQLが発行されてしまう場合があります。これは “N+1” 問題と言われているものですが、解決のためには次のような4つの選択肢があります。 JPQLでJOIN FETCHを使う Criteria API(JPQLをプログラムとして書く)でFetch Joinを記述する Named Entithy Graph を使う Dynamic Entity Graph を使う ここでは、1.のJPQLによる方法について解説します。また、そのほかの方法も、この後の章で順次、詳しく解説する予定です。 N+1問題とは 次のような具体的な例で考えましょう。 // すべてのEmployeeエンティティを得る TypedQuery<Employee> query = em.createQuery("SELECT e

    わかりやすいJPA (5):JOIN FETCH
    tvsk
    tvsk 2017/03/01
    q'inner loop order entity' N+1問題を回避する. JOIN FETCH か エンティティグラフ