Отличается между каскадом и обратным

Отличается между каскадом и обратным

Многие разработчики Hibernate не понимают каскадную опцию и обратное ключевое слово. В некотором смысле ... они действительно очень похожи в начале, оба связаны с отношениями.

Каскад против обратного

Однако нет никакой связи между каскадом и инверсией, оба понятия совершенно разные.

1. обратный

Это используется для определения, какая сторона является владельцем отношения для управления отношением (вставка или обновление столбца внешнего ключа).

пример

В этом примере владелец отношения принадлежит stockDailyRecords (inverse = true).



    
    ...
    
        
            
        
        
    
    ...

При сохранении или обновлении стокового объекта

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

Hibernate будет только вставлять или обновлять таблицу STOCK, но не обновлять столбец внешнего ключа. More detail example here…

2. каскад

В каскаде, после выполнения одной операции (сохранение, обновление и удаление), он решает, нужно ли ему вызывать другие операции (сохранение, обновление и удаление) для других объектов, которые связаны друг с другом.

пример

В этом примере cascade = ”save-update” объявляется на stockDailyRecords.



    
    ...
    
        
            
        
        
    
    ...

При сохранении или обновлении стокового объекта

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

Он вставит или обновит запись в таблицу STOCK и вызовет другой оператор вставки или обновления (cascade = «save-update») в StockDailyRecord. More detail example here…

Заключение

Короче говоря, «инверсия» - это решение о том, какая сторона будет обновлять внешний ключ, а «каскад» - решение о том, какую операцию следует выполнить. Оба выглядят очень похожими в отношениях, но это совершенно разные вещи. Разработчикам Hibernate стоит потратить время на изучение этого вопроса, потому что неправильное понимание концепции или ее неправильное использование приведут к серьезным проблемам с производительностью или целостностью данных в вашем приложении.