تساوي الكيانات
في هذا الدرس 4 موضوعات
هذا الدرس مخطط له. يعرض المخطط أدناه الموضوعات التي سيغطيها، ولم يُنشر الدرس الكامل بعد.
نص الدروس والتمارين باللغة الإنجليزية، بينما تبقى واجهة الموقع وعناوين الدروس بالعربية.
في هذا الدرس
write equals/hashCode that survive the lifecycle.
الموضوعات المخطط لها
- Default
equalscompares memory identity; two loads in different transactions are different objects. - Using all fields (as Lombok
@Datadoes) breaks when fields change and can load lazy relations. - The generated id is
nullbefore saving, so id-basedhashCodechanges afterpersistif the entity is in aHashSet. - Safe options: a stable business key (such as SKU) or the id-based pattern with a constant
hashCode. - Never use
@Dataon entities.
تفاصيل المخطط المبدئي
عرض عملي
@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.
التطبيق
طبّق هذا الدرس بمختبر الوحدة وتمارينها واختبارها.
تعليم الدرس كمكتمل اختياري ويمكنك التراجع عنه في أي وقت. يبقى تقدمك محفوظًا في هذا المتصفح.