20
JPA hashCode () / เท่ากับ () ขึ้นเขียง
มีการบาง อภิปรายนี่เกี่ยวกับหน่วยงานและที่ JPA hashCode()/ equals()การดำเนินงานควรจะใช้สำหรับการเรียน JPA นิติบุคคล ส่วนใหญ่ (ถ้าไม่ใช่ทั้งหมด) ขึ้นอยู่กับ Hibernate แต่ฉันต้องการจะพูดคุยเกี่ยวกับ JPA-Implement-neutrally (ฉันใช้ EclipseLink) การนำไปใช้งานที่เป็นไปได้ทั้งหมดนั้นมีข้อดีและข้อเสียของตัวเองเกี่ยวกับ: hashCode()/ ความequals()สอดคล้องตามสัญญา(ไม่เปลี่ยนแปลง) สำหรับList/ Setการดำเนินงาน ไม่ว่าจะเป็นวัตถุที่เหมือนกัน (เช่นจากเซสชันที่แตกต่างกันพร็อกซีไดนามิกจากโครงสร้างข้อมูลที่โหลดแบบ lazily) สามารถตรวจพบได้ ไม่ว่าเอนทิตีจะทำงานอย่างถูกต้องในสถานะแยกออก (หรือไม่คงอยู่) เท่าที่ฉันเห็นมีสามตัวเลือก : อย่าแทนที่พวกเขา; พึ่งพาObject.equals()และObject.hashCode() hashCode()/ equals()งาน ไม่สามารถระบุวัตถุที่เหมือนกันปัญหาเกี่ยวกับพร็อกซีแบบไดนามิก ไม่มีปัญหากับเอนทิตี้เดี่ยว แทนที่พวกเขาขึ้นอยู่กับคีย์หลัก hashCode()/ equals()ถูกทำลาย ตัวตนที่ถูกต้อง (สำหรับองค์กรที่มีการจัดการทั้งหมด) ปัญหาเกี่ยวกับหน่วยงานเดี่ยว แทนที่พวกเขาตามBusiness-Id (เขตข้อมูลคีย์ที่ไม่ใช่หลัก; สิ่งที่เกี่ยวกับกุญแจต่างประเทศ?) hashCode()/ equals()ถูกทำลาย ตัวตนที่ถูกต้อง (สำหรับองค์กรที่มีการจัดการทั้งหมด) ไม่มีปัญหากับเอนทิตี้เดี่ยว คำถามของฉันคือ: ฉันพลาดตัวเลือกและ …