カスケードとインバースの違い

カスケードと逆の間で異なる

多くのHibernate開発者は、カスケードオプションとインバースキーワードについて混乱しています。 いくつかの点で..最初は本当に似ているように見えますが、両方とも関係と関係しています。

カスケードと逆

ただし、カスケードと逆の関係はなく、どちらもまったく異なる概念です。

1. 逆

これは、リレーションシップを管理するリレーションシップの所有者を決定するために使用されます(外部キー列の挿入または更新)。

この例では、関係の所有者はstockDailyRecordsに属します(inverse = true)。


    
    ...
    
        
            
        
        
    
    ...

ストックオブジェクトを保存または更新するとき

session.save(stock);
session.update(stock);

Hibernateは、STOCKテーブルの挿入または更新のみを行い、外部キー列の更新は行いません。 More detail example here…

2. カスケード

カスケードでは、1つの操作(保存、更新、削除)が行われた後、相互に関係がある別のエンティティで他の操作(保存、更新、削除)を呼び出す必要があるかどうかを決定します。

この例では、cascade =” save-update”がstockDailyRecordsで宣言されています。


    
    ...
    
        
            
        
        
    
    ...

ストックオブジェクトを保存または更新するとき

session.save(stock);
session.update(stock);

レコードをSTOCKテーブルに挿入または更新し、StockDailyRecordで別の挿入または更新ステートメント(cascade =” save-update”)を呼び出します。 More detail example here…

結論

つまり、「逆」はどちらの側が外部キーを更新するかを決定し、「カスケード」は操作によるフォローバイを実行するものを決定します。 両者は関係が非常に似ているように見えますが、まったく異なるものです。 Hibernate開発者は、概念を誤解したり誤用すると、アプリケーションに深刻なパフォーマンスやデータ整合性の問題が生じるため、時間をかけて調査する価値があります。