Jpa ORM標準コース#4
3013 ワード
プロキシサーバ
時にはメンバーを連れてきたいだけ
プロキシを使用する場合は、使用時にインポートします.
em.find(), em.getReference()
Em.find():直接データベースにアクセスしてデータを取得する
Em.getReference():エージェントによってインポートされます.ダミークラス
プルーズランド
実際のクラスの継承と作成
外見が同じ
実際のメンバーをインポートするのではなく、インポートしたメンバーによって間接的にアクセスします.
em.findを使用してメンバーを事前に見つけた場合、proxyを作成する必要はなく、永続性コンテキストのメンバーをインポートします.
Proxyが作成された場合、em.clear()にproxyを検索させるとクエリーできません.
m1 = em.find(member)
m2 = em.getReference(member)
以上のように、両方が同時に見つかった場合、m 1=m 2を移動させる.(何を言っているのかわかりませんが)
ディレイロード
プロキシクエリとしてのLaZYの遅延ロード
実際のTeam使用時初期化
----->メンバーとチームが別々に照会します.
ほとんど一緒に使うのであればEAGERを使って一緒に検索するべきです.
実際の操作では、遅延ロードのみが使用されます。
@ManyToOne,@OneToOneはDefaultをEAGER->LAZYに変更する必要があります.
@OneToMany,@ManyToManyデフォルトはLAZY
em.createQuery(「select m from Memberm」)では、メンバーを問い合わせるとTeamクエリーも一緒に表示されます
CASCADEでの永続的な変換
親Entityを保存する場合、子Entityも一緒に保存する場合に使用します.
Parent.class@OneToMany(mappedBy="parent", cascade=CascasType.PERSIST)
private List<Child> childList;
上記の場合、parentを作成すると、サブレベルも作成されます.
@OneToMany(mappedBy="parent", cascade=CascasType.PERSIST)
private List<Child> childList;
永続的な移行はマッピング関連関係とは何の関係もありません.
エンティティを永続化する場合、関連するエンティティも、これらだけでなく、一緒に永続化する便利さを提供します.
ALL、PERSISTは通常2つしか使用されません.
->PERSIST:保存時のみ調整
ChildがParentとしてのみ管理されている場合はどうでもいいが、Childが他のEntityとして管理を追加している場合は使用すべきではない.(所有者が1人しかいない場合)
->単一のエンティティに属している場合にのみ使用
ライフサイクルが同じ
単一所有者の場合
孤立オブジェクト
親エンティティに関連付けられていない自動エンティティを自動的に削除します.orphanRemoval = true
Parent.class@OneToMany(mappedBy="parent", cascade=CascasType.PERSIST,orphanRemoval = true)
private List<Child> childList;
@OneToMany(mappedBy="parent", cascade=CascasType.PERSIST,orphanRemoval = true)
private List<Child> childList;
Cascade=CascasType.ALL,orphanRemoval = true
以上のようにALL,trueを与えると,親エンティティによって子どものライフサイクルを管理することができる.(子の作成、削除、クエリーは親エンティティで行えます.親エンティティは永続性コンテキストで管理でき、子エンティティは親で管理できます.ドメインマスター(DDD)では便利です.)
ライフサイクルが同じ
単一所有者の場合
Reference
この問題について(Jpa ORM標準コース#4), 我々は、より多くの情報をここで見つけました https://velog.io/@camel-man-ims/Jpa-ORM-표준강좌-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol