ความแตกต่างที่สำคัญคือการโหลดล่าช้าหรือไม่
วิธีการโหลดไม่สามารถเข้าถึงฐานข้อมูลได้ทันทีและเมื่อบันทึกที่พยายามโหลดไม่มีอยู่วิธีการโหลดจะส่งคืนวัตถุพร็อกซีที่ไม่ได้รับการกำหนด
รับวิธีการ
เข้าถึงฐานข้อมูลได้ทันที เมื่อบันทึกพยายามโหลดไม่มีอยู่ให้ส่งคืนค่า null โดยตรง
มีสองวิธีที่พบในไฮเบอร์เนตที่คล้ายกันมาก หลังจากตรวจสอบแล้วฉันก็พบ
มีสองวิธีที่คล้ายกันมากในไฮเบอร์เนตรับ () และโหลด () พวกเขาสามารถอ่านข้อมูลจากฐานข้อมูลผ่านคลาสเอนทิตีที่ระบุและ ID และส่งคืนอินสแตนซ์ที่เกี่ยวข้อง อย่างไรก็ตามไฮเบอร์เนตจะไม่ทำสองวิธีเดียวกัน ความแตกต่างระหว่างพวกเขาคือ:
รับคือการสอบถามฐานข้อมูลโดยตรง หากไม่สามารถพบได้มันจะส่งคืนค่า NULL โหลดจะถูกโหลดจากหน่วยความจำก่อน หากยังไม่ได้รับการโหลดหรือสอบถามมาก่อนให้สอบถามฐานข้อมูล
ความแตกต่างพื้นฐานระหว่างวิธี GET และวิธีการโหลดในไฮเบอร์เนตคือถ้าคุณใช้วิธีการโหลดไฮเบอร์เนตเชื่อว่าวัตถุ (บันทึกฐานข้อมูล) ที่สอดคล้องกับ ID ต้องมีอยู่ในฐานข้อมูลดังนั้นจึงสามารถใช้ด้วยความมั่นใจและสามารถใช้พร็อกซีเพื่อชะลอการโหลดวัตถุ ฐานข้อมูลจะถูกสอบถามเมื่อใช้ข้อมูลแอตทริบิวต์อื่น ๆ ในวัตถุ แต่หากบันทึกไม่มีอยู่ในฐานข้อมูลจะไม่มีทางและคุณสามารถโยนข้อยกเว้นได้เท่านั้น วิธีการโหลดมีข้อยกเว้นหมายความว่าเมื่อใช้ข้อมูลของวัตถุข้อยกเว้นจะถูกโยนลงเมื่อข้อมูลไม่มีอยู่ในฐานข้อมูลแทนที่จะสร้างวัตถุนี้ เนื่องจากแคชในเซสชั่นเป็นทรัพยากรราคาถูกมากสำหรับไฮเบอร์เนตเมื่อโหลดเราจะตรวจสอบแคชเซสชันก่อนเพื่อดูว่าวัตถุที่สอดคล้องกับ ID มีอยู่หรือไม่ หากไม่มีอยู่พร็อกซีจะถูกสร้างขึ้น ดังนั้นหากคุณรู้ว่า ID ต้องมีเร็กคอร์ดที่สอดคล้องกันในฐานข้อมูลคุณสามารถใช้วิธีการโหลดเพื่อให้ได้การโหลดขี้เกียจ สำหรับวิธีการรับ Hibernate จะยืนยันว่าข้อมูลที่สอดคล้องกับ ID นั้นมีอยู่หรือไม่ ก่อนอื่นให้ค้นหาในแคชเซสชันแล้วค้นหาในแคชรอง หากยังไม่ได้ทำให้ค้นหาฐานข้อมูลและหากยังไม่ได้ทำในฐานข้อมูลให้ส่งคืนค่า null
2. วิธีการค้นหาครั้งแรกของเซสชันแคชถ้าไม่สอบถามแคชทุติยภูมิและในที่สุดก็สืบค้นฐานข้อมูล; ในทางตรงกันข้ามเมื่อมีการสร้างวิธีการโหลดแคชเซสชันจะเป็นแบบสอบถามแรกและหากไม่มีเอเจนต์ถูกสร้างขึ้นแคชทุติยภูมิและฐานข้อมูลจะถูกสืบค้นเฉพาะเมื่อใช้ข้อมูลจริง
กล่าวโดยย่อสำหรับความแตกต่างพื้นฐานระหว่าง Get และ Load ในคำศัพท์ Hibernate เชื่อว่าข้อมูลจะต้องมีอยู่ในฐานข้อมูลสำหรับวิธีการโหลดและสามารถใช้พร็อกซีเพื่อชะลอการโหลดด้วยความมั่นใจ หากพบปัญหาระหว่างการใช้งานจะสามารถโยนข้อยกเว้นได้เท่านั้น สำหรับวิธีการรับไฮเบอร์เนตจะต้องได้รับข้อมูลจริงมิฉะนั้นจะส่งคืนค่า NULL
1. หากไม่พบบันทึกที่ตรงตามเกณฑ์วิธี GET () จะส่งคืนค่า NULL และโหลด () จะรายงาน ObjectNotFoundEcception
2. วิธีการโหลด () สามารถส่งคืนอินสแตนซ์ของคลาสพร็อกซีของเอนทิตีในขณะที่ GET () จะส่งคืนเฉพาะคลาสเอนทิตีเท่านั้น
3. วิธีการโหลด () สามารถใช้ข้อมูลที่มีอยู่ได้อย่างเต็มที่ในแคชรองและแคชภายในในขณะที่วิธี Get () จะค้นหาเฉพาะในแคชภายในเท่านั้น หากไม่พบข้อมูลที่สอดคล้องกันแคชรองจะถูกข้ามและ SQL จะถูกเรียกโดยตรงเพื่อทำการค้นหาให้เสร็จสมบูรณ์