Переосмыслите дизайн, в котором вы хотите отобразить диалоговое окно подтверждения. Окна подтверждения в значительной степени бесполезны, потому что пользователи вынуждены всегда нажимать «да, это я и имел в виду». Вместо этого, если пользователь отменяет действие после внесения изменения, предоставьте ему механизм для восстановления этих данных. Это особенно важно, если диалог в данных является трудным или занимает много времени для воспроизведения пользователем, не так важно, если пользователь может повторить свою работу в считанные секунды.
Чтобы ответить на ваш конкретный вопрос, я рекомендую вариант (2), где у вас есть клон объекта. Сравнение оригинала с новым - самый верный способ узнать, изменились ли данные? Если вы используете концепцию «грязного бита», убедитесь, что вы обрабатываете случай, когда пользователь изменил значение, а затем вернул его обратно. Обычно, чтобы сделать это, вы все равно должны сохранить копию оригинальной версии, чтобы вернуться к сохранению копии оригинального объекта. С копией исходного объекта в руках, вероятно, проще просто сравнить два объекта, чем управлять отслеживанием грязного бита.