Автор оригинала: mkyong.
Многие разработчики гибернации путают опцию каскада и ключевое слово inverse. В некотором смысле.. они действительно выглядят очень похожими в начале, оба связаны отношениями.
Каскад против обратного
Однако между каскадом и инверсией нет никакой связи, и то, и другое – совершенно разные понятия.
1. обратный
Это используется для определения того, какая сторона является владельцем отношений для управления отношениями (вставка или обновление столбца внешнего ключа).
Пример
В этом примере владельцем отношений является принадлежность к записям Stockdaily).
... ...
При сохранении или обновлении объекта запаса
session.save(stock); session.update(stock);
Hibernate будет только вставлять или обновлять таблицу ЗАПАСОВ, без обновления столбца внешнего ключа. Более подробный пример здесь…
2. каскад
В каскаде после выполнения одной операции (сохранение, обновление и удаление) он решает, нужно ли вызывать другие операции (сохранение, обновление и удаление) для других объектов, которые связаны друг с другом.
Пример
В этом примере, это объявлено на биржевых записях.
... ...
При сохранении или обновлении объекта запаса
session.save(stock); session.update(stock);
Он вставит или обновит запись в таблицу ЗАПАСОВ и вызовет другую инструкцию insert или update) в StockDailyRecord. Более подробный пример здесь…
Вывод
Короче говоря, “обратная” – это решение о том, какая сторона обновит внешний ключ, в то время как “каскад” – это решение о том, какая последующая операция должна выполняться. Оба выглядят очень похожими в отношениях, но это совершенно разные вещи. Разработчикам Hibernate стоит потратить время на его изучение, потому что неправильное понимание концепции или неправильное ее использование приведет к серьезным проблемам с производительностью или целостностью данных в вашем приложении.
Ссылка
1. обратный= “истинный” пример и объяснение 2. пример каскада – сохранение, обновление и удаление
Оригинал: “https://mkyong.com/hibernate/different-between-cascade-and-inverse/”