ما هي أفضل طريقة لتحديد ما إذا كان الكائن قد تم تغييره؟
-
23-09-2019 - |
سؤال
لقد قمت ببعض وظائف "حفظ" الفول في تطبيق الويب الخاص بي جافا (JSF1.2 ، Richfaces). إنه يستخدم JaxB لتحويله إلى سلسلة XML ثم يتم تخزينه في قاعدة البيانات. إذا قام المستخدم بتحميل هذا مرة أخرى ، فأنا أريد إخطار المستخدم إذا تم تغيير محتوى (Bean) ويجب حفظه مرة أخرى.
فكرتي هي تجاوز hashCode()
وظيفة "مع" org.apache.commons.lang.builder.HashCodeBuilder
, ومع ذلك ، لدي الكثير من الحقول وعناصر الأطفال. هل هناك أي طريقة أخرى للتعامل مع هذا النوع من الوظائف؟
تعديل
"المقارنة" تتم على وجهة نظر أخرى!
سيكون موضع تقدير أي مساعدة!
المحلول
يمكنك إضافة أ boolean dirty;
العلم إلى الفول ، وضبطه على true
في المستودعات الخاصة بك ومسحها أثناء إعادة التحميل وبعد حفظ.
نصائح أخرى
لا يمكنك الاعتماد عليها hashCode
وحده لتحديد ما إذا كان قد تم تغيير كائن. هذا هو ، لمجرد أن الكائن لديه نفس الشيء hashCode
كما كان من قبل ، لا يعني أنه لم يتغير.
يمكنك استخدام وظيفة MD5 من Java:
MessageDigest digest = java.security.MessageDigest.getInstance("MD5");
digest.update(myObject);
byte[] hash = digest.digest();