انتقل إلى المحتوى
أمين أبوزيد
درس مخطط لهJNR-028-L06

تساوي الكيانات

  • الدرس 6 من 8
  • Junior
في هذا الدرس 4 موضوعات

هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.

نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.

في هذا الدرس

write equals/hashCode that survive the lifecycle.

الموضوعات المخطط لها

  • Default equals compares memory identity; two loads in different transactions are different objects.
  • Using all fields (as Lombok @Data does) breaks when fields change and can load lazy relations.
  • The generated id is null before saving, so id-based hashCode changes after persist if the entity is in a HashSet.
  • Safe options: a stable business key (such as SKU) or the id-based pattern with a constant hashCode.
  • Never use @Data on entities.
تفاصيل المخطط المبدئي

عرض عملي

java
@Override public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Product other)) return false;
    return id != null && id.equals(other.id);
}
@Override public int hashCode() { return getClass().hashCode(); }

اختبر فهمك

Why is @Data risky on an entity?

أظهر الإجابة

Its equals/hashCode use all fields, which change and may trigger lazy loading.

التطبيق

طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.

المختبر والتمارين الاختبار

تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.

اكتب للبحث في المستويات والمراحل والوحدات والدروس.