[解決済み] Java Persistence APIにおけるFetchType LAZYとEAGERの違い?
2022-03-15 08:23:36
質問
私は、JavaのPersistence APIとHibernateの初心者です。
とはどのような違いがあるのでしょうか?
FetchType.LAZY
と
FetchType.EAGER
をJavaのPersistence APIで使用することはできますか?
どのように解決するのですか?
2つのエンティティがあり、それらの間に関係がある場合があります。たとえば、次のようなエンティティがあるとします。
University
というエンティティがあり、さらに
Student
そして、大学には多くの学生がいます。
Universityエンティティは、id、name、addressなどの基本的なプロパティと、指定された大学の学生のリストを返すstudentsというコレクションプロパティを持つかもしれません。
public class University {
private String id;
private String name;
private String address;
private List<Student> students;
// setters and getters
}
さて、データベースから大学を読み込むと、JPAはそのid、name、addressフィールドを読み込んでくれます。しかし、学生がどのようにロードされるかについては、2つのオプションがあります。
- 他のフィールドと一緒にロードする (つまり、イーガーリー)、あるいは
-
を呼び出したときにオンデマンドで (つまり遅延して) ロードする。
getStudents()
メソッドを使用します。
大学が多くの学生を抱える場合、特に必要のない学生まで一緒に読み込むのは効率が悪く、そのような場合は、実際に必要なときに学生を読み込むように宣言することができます。これをレイジーローディングと呼びます。
以下に例を示します。
students
は、イーガーリーに読み込まれるように明示的にマークされています。
@Entity
public class University {
@Id
private String id;
private String name;
private String address;
@OneToMany(fetch = FetchType.EAGER)
private List<Student> students;
// etc.
}
そして、この例では
students
は遅延ロードされるように明示的にマークされています。
@Entity
public class University {
@Id
private String id;
private String name;
private String address;
@OneToMany(fetch = FetchType.LAZY)
private List<Student> students;
// etc.
}
関連
-
Java Exceptionが発生しました エラー解決
-
プロジェクトの依存関係を解決できなかった 解決
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] Java内部クラスと静的ネストされたクラス
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] wait()とsleep()の違いについて
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
エラー java.util.NoSuchElementException
-
エラーが報告されました。リソースの読み込みに失敗しました:サーバーは500(内部サーバーエラー)のステータスで応答しました。
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
myeclipseでコンパイルするとAntエラーが発生する javaの例外が発生しました。
-
Spring Boot による HTTPS アクセスの設定
-
Enumとの組み合わせでswitchの使い方を一度覚えるために必要な定数式
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について