ما هي أفضل طريقة لتحديد ما إذا كان الكائن قد تم تغييره؟

StackOverflow https://stackoverflow.com/questions/2346726

  •  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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top