jpaにおけるNneToManyにおけるmappedByの役割とCascadeカスケード操作
2219 ワード
JPA,@OneToManyにmappedBy属性を加えて中間テーブルの生成を避ける
JPAを使用する場合、A Bの2つのエンティティ間が1対多、多対一の関係である場合、@OneToManyにmappedByプロパティを追加しないと、余分な中間テーブルが自動的に生成されます.例:
このように書くと、テーブルAとテーブルBが生成され、BにはテーブルAへの外部キーが1つしか生成されません.ただしmappedBy="a"を付けないと、もう1枚A_が生成されますB表
Cascadeカスケード操作CascadeType.PERSISTカスケード持続化(保存)操作CascadeType.MERGEカスケード更新(連結)操作CascadeType.REFRESHカスケードリフレッシュ操作は、取得操作CascadeTypeのみを問い合わせる.REMOVEカスケード削除操作CascadeType.ALLカスケード以上のすべての操作Fetchはロードを遅延するかどうかをキャプチャし、デフォルトでは一方は即時ロードであり、多くの一方はロードを遅延するmappedBy関係のためにmappedBy=「order」はOrderItemクラスのorder属性を表して関係を維持する
JPAを使用する場合、A Bの2つのエンティティ間が1対多、多対一の関係である場合、@OneToManyにmappedByプロパティを追加しないと、余分な中間テーブルが自動的に生成されます.例:
@Entity
public
class
A {
@OneToMany(
mappedBy="a"
)
public
Set<
B>
bs = new
HashSet<
B>
(
0
)
;
}
@Entity
public
class
B {
@ManyToOne
public
A a;
}
このように書くと、テーブルAとテーブルBが生成され、BにはテーブルAへの外部キーが1つしか生成されません.ただしmappedBy="a"を付けないと、もう1枚A_が生成されますB表
Cascadeカスケード操作CascadeType.PERSISTカスケード持続化(保存)操作CascadeType.MERGEカスケード更新(連結)操作CascadeType.REFRESHカスケードリフレッシュ操作は、取得操作CascadeTypeのみを問い合わせる.REMOVEカスケード削除操作CascadeType.ALLカスケード以上のすべての操作Fetchはロードを遅延するかどうかをキャプチャし、デフォルトでは一方は即時ロードであり、多くの一方はロードを遅延するmappedBy関係のためにmappedBy=「order」はOrderItemクラスのorder属性を表して関係を維持する