[Spring Boot2][1] 8. エージェントとの関連付けの処理
10465 ワード
🏷 プロキシサーバ
どうしてこれを使うの?🤔❓
・¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
単独で出力したい場合は、どうすればいいですか?
勘定科目のプロキシインフラストラクチャ
em.find()
vs em.getReference()
em.find()
:実際のエンティティ・オブジェクトをデータベースで問い合わせるem.getReference()
:データベース照会を遅らせる偽(エージェント)エンティティオブジェクト照会勘定科目のプロキシフィーチャー
✔勘定科目エージェントオブジェクトの初期化
Member member = em.getReference(Member.class, “id1”);
member.getName();
勘定科目の勘定科目プロキシの定理
¥¥¥¥¥¥
初期化すると、プロキシオブジェクトから実際のエンティティにアクセスできます.
em.getReference()
実際のエンティティに戻るЙЙЙЙЙЙЙЙЙЙЙЙЙЙ
🏷 即時ロードと遅延ロード
1」ディレイロード
🤔 : さっき言ったようにメンバーを問い合わせるときにチーム以外にメンバーだけを問い合わせることはできないのでしょうか?
だからJPAは遅延ロードオプションを提供します
ディレイロード
@Entity
public class Member {
@Id
@GeneratedValue
private String name;
@Column(name = "USERNAME")
private String name;
@ManyToOne(fetch = FetchType.LAZY) //**
@JoinColumn(name = "TEAM_ID")
private Team team;
..
}
org.hibernate.LazyInitializationException
ААААААААААААААmember 1をロードするとteam 1が遅延ロードに設定されるので、エージェントをインポートできます!
✔代理クエリーとして遅延ロードLAZYを使用
チームが遅延ロードに設定されている場合、偽エージェントが受信されます.
АААААААААААААААА
即時ロード2」
🤔 : チームがメンバーと一緒に使うなら?
ロードされたEAGERをすぐに使用
✔即時ロード
@Entity
public class Member {
@Id
@GeneratedValue
private String name;
@Column(name = "USERNAME")
private String name;
@ManyToOne(fetch = FetchType.EAGER) //**
@JoinColumn(name = "TEAM_ID")
private Team team;
..
}
@ManyToOne(fetch = FetchType.LAZY)
ААААААААААААААА\1040ロードが完了したら、一緒にチームを組んで持ってきてください.
¥JPAインプリメンテーションは可能な限り連結を使用してSQLを検索します!
✔¥エージェントと即時ロードの注意
em.find()
, @ManyToOne(fetch = FetchType.EAGER)
은 기본이 즉시 로딩 ➡️ LAZY로 설정 @ManyToOne
・@OneToOne
基本的にディレイロード3遅延負荷の利用
・𐂍𐂍・𐂊」「「よく一緒に使う」すぐにロード・
・𐂍𐂍・𐂊」」」」」」」」」
・𐂍𐂍・𐂊」「「「」を常に一緒に使う」即ロード
¥2これは実は理論上の内容で、・ʦ8・
実際の操作では、遅延ロードをすべて使用するだけで済みます.
勘定科目JPQL fetch結合、またはエンティティグラフィックス機能を使用します(後述)
🏷 永続性遷移(CASCADE)と孤立オブジェクト
✔朕霊属性戦
@OneToMany
✔CASCADのタイプ
@ManyToMany
:全て適用ЙЙЙЙЙ8ЙЙ
Member
:永続¥¥¥8¥¥
Team
:削除Member
:合併Order
: REFRESH Order
: DETACH 例えば、掲示板、添付ファイルの表データ等
✔✔上品なオブジェクト
Product
@OneToMany(mappedBy="parent", cascade=CascadeType.PERSIST)
Parent parent1 = em.find(Parent.class, id);
parent1.getChildren().remove(0);
アセンブリからサブエンティティを除去するにはに注意🤚🏻
ALL
・PERSIST
限定REMOVE
と同じ動作✔¥霊性殿+孤児対象、ライフサイクル
MERGE
REFRESH
羅永続化DETACH
羅消去🏷 実戦例5-関連管理
✔▼設定を追加
📌 グローバルバッチ・ポリシーの設定
1朕はすべての関連関係を遅延ロードに設定する
2▼▼、▼、▼▼、▼▼▼▼、▼▼▼▼4、▼▼▼▼
📌 永続的な移行設定
1”Order”Delivery,永久性全ALL設定
2””Order”OrderItem,永久性全ALL
勘定科目
1朕グローバル配置戦略設置
@ManyToOne(fetch = LAZY)
@OneToOne(fetch = LAZY)
¥¥2▞▞永久的な移行の設定
@OneToOne(fetch = LAZY, cascade = ALL)
@JoinColumn(name = "DELIVERY_ID")
private Delivery delivery;
@OneToMany(mappedBy = "order", cascade = ALL)
private List<OrderItem> orderItems = new ArrayList<>();
¥¥いい内容だった
Reference
この問題について([Spring Boot2][1] 8. エージェントとの関連付けの処理), 我々は、より多くの情報をここで見つけました https://velog.io/@sorzzzzy/Spring-Boot21-8.-프록시와-연관-관계-처리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol