Отличается между каскадом и обратным
Многие разработчики 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 стоит потратить время на изучение этого вопроса, потому что неправильное понимание концепции или ее неправильное использование приведут к серьезным проблемам с производительностью или целостностью данных в вашем приложении.